摘要: 在Java中,停止一个线程的主要机制是中断,中断并不是强迫终止一个线程,它是一种协作机制,是给线程传递一个取消信号,但是由线程来决定如何以及何时退出。 Thread类定义了如下方法: interrupt()对线程的影响与线程的状态和在进行的IO操作有关,我们先考虑线程的状态: RUNNABLE:线程 阅读全文
posted @ 2018-08-05 17:43 沉默哥 阅读(3571) 评论(0) 推荐(2) 编辑
摘要: 协作基础(wait/notify) Java的根父类是Object,Java在Object类而非Thread类中,定义了一些线程协作的基本方法,使得每个对象都可以调用这些方法,这些方法有两类,一类是wait,另一类是notify。 wait方法主要有两个: 一个带时间参数,单位是毫秒,表示最多等待这 阅读全文
posted @ 2018-08-05 17:05 沉默哥 阅读(248) 评论(0) 推荐(0) 编辑
摘要: synchronized基础用法 synchronized可以用于修饰类的实例方法、静态方法和代码块。它保护的是对象(包括类对象)而非代码,只要访问的是同一个对象的synchronized方法,即使是不同的代码,也会被同步顺序访问。 每个对象有一个锁(又叫监视器)和一个锁等待队列,锁只能被一个线程持 阅读全文
posted @ 2018-08-05 15:51 沉默哥 阅读(1584) 评论(0) 推荐(0) 编辑
摘要: 线程基础 线程表示一条单独的执行流,它有自己的程序执行计数器,有自己的栈 java中线程的实现方式: 继承Thread类并重写其run方法(Thread类也实现了Runnable接口,并提供了默认实现),调用Thread类的实例方法start()启动线程 实现Runnable接口(重写run()方法 阅读全文
posted @ 2018-08-05 14:46 沉默哥 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 堆 满二叉树:满二叉树是指,除了最后一层外,每个节点都有两个孩子,而最后一层都是叶子节点,都没有孩子。 完全二叉树:完全二叉树不要求最后一层是满的,但如果不满,则要求所有节点必须集中在最左边,从左到右是连续的,中间不能有空的。 一个特性:给定任意一个节点,可以根据其编号直接快速计算出其父节点和孩子节 阅读全文
posted @ 2018-08-04 19:30 沉默哥 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 集合类的架构图: HashMap 内部维护一个链表数组做哈希表,默认大小为16,最大值可以为2^30,默认负载因子0.75。 可以通过构造方法指定初始大小和负载因子,当键值对个数大于等于临界值threshold(数组当前大小和负载因子的乘积)时对数组进行扩容,扩容策略为当前数组大小乘以2。 数组的每 阅读全文
posted @ 2018-08-04 18:44 沉默哥 阅读(1932) 评论(0) 推荐(0) 编辑
摘要: java中的具体容器类都不是从头构建的,他们都继承了一些抽象容器类。这些抽象容器类,提供了容器接口的部分实现,方便具体容器类在抽象类的基础上做具体实现。容器类和接口的关系架构图如下: 虚线框表示接口,有Collection, List, Set, Queue, Deque和Map。 有六个抽象容器类 阅读全文
posted @ 2018-08-04 17:43 沉默哥 阅读(579) 评论(0) 推荐(0) 编辑
摘要: java中的枚举类型是jdk1.5新增的一个东西,其本质是一个java.lang.Enum类的子类,每个枚举项是一个静态常量对象,由编译器为每个枚举项分配ordinal和name,其中ordinal是枚举项声明时候的顺序,从0开始,name是枚举项的名称,可以通过同名无参方法name()和ordin 阅读全文
posted @ 2018-07-30 18:58 沉默哥 阅读(796) 评论(0) 推荐(0) 编辑
摘要: 在java中,一个类可以放在另一个类的内部,称之为内部类,相对而言,包含它的类称之为外部类。不过对于Java虚拟机而言,它是不知道内部类这回事的, 每个内部类最后都会被编译为一个独立的类,生成一个独立的字节码文件。内部类可以方便的访问外部类的私有变量,可以声明为private从而实现对外完全隐藏,相 阅读全文
posted @ 2018-07-30 18:50 沉默哥 阅读(496) 评论(0) 推荐(0) 编辑
摘要: java有八个基本数据类型,每个都有对应的一个包装类,比如int对应的Integer。从jdk1.5开始,java引入了自动拆装箱,可以直接进行形如Integer i = 20形式的赋值,编译器会自动将其转换为Integer i = Integer.valueOf(20)进行装箱,拆箱则是将int 阅读全文
posted @ 2018-07-30 18:39 沉默哥 阅读(1618) 评论(0) 推荐(1) 编辑