08 2018 档案

摘要:在Java中,停止一个线程的主要机制是中断,中断并不是强迫终止一个线程,它是一种协作机制,是给线程传递一个取消信号,但是由线程来决定如何以及何时退出。 Thread类定义了如下方法: interrupt()对线程的影响与线程的状态和在进行的IO操作有关,我们先考虑线程的状态: RUNNABLE:线程 阅读全文
posted @ 2018-08-05 17:43 沉默哥 阅读(3607) 评论(0) 推荐(2)
摘要:协作基础(wait/notify) Java的根父类是Object,Java在Object类而非Thread类中,定义了一些线程协作的基本方法,使得每个对象都可以调用这些方法,这些方法有两类,一类是wait,另一类是notify。 wait方法主要有两个: 一个带时间参数,单位是毫秒,表示最多等待这 阅读全文
posted @ 2018-08-05 17:05 沉默哥 阅读(268) 评论(0) 推荐(0)
摘要:synchronized基础用法 synchronized可以用于修饰类的实例方法、静态方法和代码块。它保护的是对象(包括类对象)而非代码,只要访问的是同一个对象的synchronized方法,即使是不同的代码,也会被同步顺序访问。 每个对象有一个锁(又叫监视器)和一个锁等待队列,锁只能被一个线程持 阅读全文
posted @ 2018-08-05 15:51 沉默哥 阅读(1621) 评论(0) 推荐(0)
摘要:线程基础 线程表示一条单独的执行流,它有自己的程序执行计数器,有自己的栈 java中线程的实现方式: 继承Thread类并重写其run方法(Thread类也实现了Runnable接口,并提供了默认实现),调用Thread类的实例方法start()启动线程 实现Runnable接口(重写run()方法 阅读全文
posted @ 2018-08-05 14:46 沉默哥 阅读(237) 评论(0) 推荐(0)
摘要:堆 满二叉树:满二叉树是指,除了最后一层外,每个节点都有两个孩子,而最后一层都是叶子节点,都没有孩子。 完全二叉树:完全二叉树不要求最后一层是满的,但如果不满,则要求所有节点必须集中在最左边,从左到右是连续的,中间不能有空的。 一个特性:给定任意一个节点,可以根据其编号直接快速计算出其父节点和孩子节 阅读全文
posted @ 2018-08-04 19:30 沉默哥 阅读(453) 评论(0) 推荐(0)
摘要:集合类的架构图: HashMap 内部维护一个链表数组做哈希表,默认大小为16,最大值可以为2^30,默认负载因子0.75。 可以通过构造方法指定初始大小和负载因子,当键值对个数大于等于临界值threshold(数组当前大小和负载因子的乘积)时对数组进行扩容,扩容策略为当前数组大小乘以2。 数组的每 阅读全文
posted @ 2018-08-04 18:44 沉默哥 阅读(1970) 评论(0) 推荐(0)
摘要:java中的具体容器类都不是从头构建的,他们都继承了一些抽象容器类。这些抽象容器类,提供了容器接口的部分实现,方便具体容器类在抽象类的基础上做具体实现。容器类和接口的关系架构图如下: 虚线框表示接口,有Collection, List, Set, Queue, Deque和Map。 有六个抽象容器类 阅读全文
posted @ 2018-08-04 17:43 沉默哥 阅读(628) 评论(0) 推荐(0)