From 9b8a6f478010035ae6067d30017da959b1b267bd Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 09:31:53 +0800 Subject: [PATCH 01/17] auto commit --- notes/Java 容器.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/Java 容器.md b/notes/Java 容器.md index e05da058..09b1d0f0 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -755,7 +755,7 @@ JDK 1.8 的实现不是用了 Segment,Segment 属于重入锁 ReentrantLock。 # 五、参考资料 -- Java 编程思想 +- Eckel B. Java 编程思想 [M]. 机械工业出版社, 2002. - [Java Collection Framework](https://www.w3resource.com/java-tutorial/java-collections.php) - [Iterator 模式](https://openhome.cc/Gossip/DesignPattern/IteratorPattern.htm) - [Java 8 系列之重新认识 HashMap](https://tech.meituan.com/java-hashmap.html) From c3a9d0b82d0c69d33ef5ff66cf959414e2b20d1f Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 09:37:38 +0800 Subject: [PATCH 02/17] auto commit --- notes/Java IO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/Java IO.md b/notes/Java IO.md index 6e91761b..1c1e4e1b 100644 --- a/notes/Java IO.md +++ b/notes/Java IO.md @@ -392,7 +392,7 @@ MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024); NIO 与普通 I/O 的区别主要有以下两点: - NIO 是非阻塞的。应当注意,FileChannel 不能切换到非阻塞模式,套接字 Channel 可以。 -- NIO 面向流,I/O 面向块。 +- NIO 面向块,I/O 面向流。 # 八、参考资料 From 4b20d4192a28f5380c5429686467a4da952bb64d Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 11:06:31 +0800 Subject: [PATCH 03/17] auto commit --- notes/Java 虚拟机.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/notes/Java 虚拟机.md b/notes/Java 虚拟机.md index a31cbc96..1735580a 100644 --- a/notes/Java 虚拟机.md +++ b/notes/Java 虚拟机.md @@ -688,3 +688,7 @@ java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC - 周志明. 深入理解 Java 虚拟机 [M]. 机械工业出版社, 2011. - [Jvm memory](https://www.slideshare.net/benewu/jvm-memory) - [Memory Architecture Of JVM(Runtime Data Areas)](https://hackthejava.wordpress.com/2015/01/09/memory-architecture-by-jvmruntime-data-areas/) +- [JVM Run-Time Data Areas](https://www.programcreek.com/2013/04/jvm-run-time-data-areas/) +- [Android on x86: Java Native Interface and the Android Native Development Kit](http://www.drdobbs.com/architecture-and-design/android-on-x86-java-native-interface-and/240166271) +- [深入理解 JVM(2)——GC 算法与内存分配策略](https://crowhawk.github.io/2017/08/10/jvm_2/) +- [深入理解 JVM(3)——7 种垃圾收集器](https://crowhawk.github.io/2017/08/15/jvm_3/) From ee840b7946f548ac6dcc0afad9ed8917ae5afcb9 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 12:59:51 +0800 Subject: [PATCH 04/17] auto commit --- notes/Java 并发.md | 74 +++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/notes/Java 并发.md b/notes/Java 并发.md index 0191bc53..cf9a6461 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -111,7 +111,7 @@ public class MyThread extends Thread { 实现接口会更好一些,因为: 1. Java 不支持多重继承,因此继承了 Thread 类就无法继承其它类,但是可以实现多个接口; -2. 类可能只要求可执行即可,继承整个 Thread 类开销会过大。 +2. 类可能只要求可执行就行,继承整个 Thread 类开销会过大。 # 二、基础线程机制 @@ -167,11 +167,17 @@ main() 属于非后台线程。 一个线程进入阻塞状态可能有以下原因: -1. 调用 Thread.sleep() 方法进入休眠状态; -2. 通过 wait() 使线程挂起,直到线程得到 notify() 或 notifyAll() 消息(或者 java.util.concurrent 类库中等价的 signal() 或 signalAll() 消息; +1. 调用 Thread.sleep() 使线程睡眠; +2. 调用 wait() 使线程挂起,直到线程得到 notify() 或 notifyAll() 消息(或者 java.util.concurrent 类库中等价的 signal() 或 signalAll() 消息; 3. 等待某个 I/O 的完成; 4. 试图在某个对象上调用其同步控制方法,但是对象锁不可用,因为另一个线程已经获得了这个锁。 +**阻塞 睡眠 挂起** + +阻塞是一种状态,而睡眠和挂起是一种手段,通过睡眠和挂起可以让一个线程进入阻塞状态。 + +睡眠和挂起这两种手段的区别是,一个使用睡眠方式阻塞的线程在一个指定的时间之后(Thread.sleep(millisec) 的 millisec 参数指定)会退出阻塞状态,而一个使用挂起方式阻塞的线程必须等到其它线程给它发消息它才能退出阻塞状态。 + ## 中断 使用中断机制即可终止阻塞的线程。 @@ -186,7 +192,7 @@ main() 属于非后台线程。 **2. Executor 的中断操作** -Executor 避免对 Thread 对象的直接操作,但是使用 interrupt() 方法必须持有 Thread 对象。Executor 使用 shutdownNow() 方法来中断它里面的所有线程,shutdownNow() 方法会发送 interrupt() 调用给所有线程。 +Executor 避免对 Thread 对象的直接操作,使用 shutdownNow() 方法来中断它里面的所有线程,shutdownNow() 方法会发送 interrupt() 调用给所有线程。 如果只想中断一个线程,那么使用 Executor 的 submit() 而不是 executor() 来启动线程,就可以持有线程的上下文。submit() 将返回一个泛型 Futrue,可以在它之上调用 cancel(),如果将 true 传递给 cancel(),那么它将会发送 interrupt() 调用给特定的线程。 @@ -194,7 +200,7 @@ Executor 避免对 Thread 对象的直接操作,但是使用 interrupt() 方 通过中断的方法来终止线程,需要线程进入阻塞状态才能终止。如果编写的 run() 方法循环条件为 true,但是该线程不发生阻塞,那么线程就永远无法终止。 -interrupt() 方法会设置中断状态,可以通过 interrupted() 方法来检查中断状,从而判断一个线程是否已经被中断。 +interrupt() 方法会设置中断状态,可以通过 interrupted() 方法来检查中断状态,从而判断一个线程是否已经被中断。 interrupted() 方法在检查完中断状态之后会清除中断状态,这样做是为了确保一次中断操作只会产生一次影响。 @@ -221,6 +227,8 @@ interrupted() 方法在检查完中断状态之后会清除中断状态,这样 1. 同步:可以和操作系统的互斥等同; 2. 通信:可以和操作系统的同步等同。 +很多时候这三个概念都会混在一起用,不同的文章有不同的解释,不能说哪个是对的哪个是错的,只要自己能理解就行。 + ## 线程同步 给定一个进程内的所有线程,都共享同一存储空间,这样有好处又有坏处。这些线程就可以共享数据,非常有用。不过,在两个线程同时修改某一资源时,这也会造成一些问题。Java 提供了同步机制,以控制对共享资源的互斥访问。 @@ -269,11 +277,11 @@ public int func(int value) { 它们都属于 Object 的一部分,而不属于 Thread。 -wait() 会在等待时将线程挂起,而不是忙等待,并且只有在 notify() 或者 notifyAll() 到达时才唤醒。 +wait() 会在等待时将线程挂起,而不是忙等待,并且只有在 notify() 或者 notifyAll() 到达时才唤醒。可以通过这种机制让一个线程阻塞,直到某种特定条件满足。 sleep() 和 yield() 并没有释放锁,但是 wait() 会释放锁。 -实际上,只有在同步控制方法或同步控制块里才能调用 wait() 、notify() 和 notifyAll()。 +只有在同步控制方法或同步控制块里才能调用 wait() 、notify() 和 notifyAll()。 ```java private boolean flag = false; @@ -293,8 +301,11 @@ public synchronized void before() { **wait() 和 sleep() 的区别** +这两种方法都能将线程阻塞,一种是使用挂起的方式,一种使用睡眠的方式。 + 1. wait() 是 Object 类的方法,而 sleep() 是 Thread 的静态方法; -2. wait() 会放弃锁,而 sleep() 不会。 +2. 挂起会释放锁,睡眠不会。 +3. 挂起必须等待其它线程的通知才能结束阻塞状态,而睡眠会在一定的时间之后自动结束。 ### 2. BlockingQueue @@ -303,16 +314,16 @@ java.util.concurrent.BlockingQueue 接口有以下阻塞队列的实现: - **FIFO 队列** :LinkedBlockingQueue、ArrayListBlockingQueue(固定长度) - **优先级队列** :PriorityBlockingQueue -提供了阻塞的 take() 和 put() 方法:如果队列为空 take() 将一直阻塞到队列中有内容,如果队列为满 put() 将阻塞到队列有空闲位置。它们响应中断,当收到中断请求的时候会抛出 InterruptedException,从而提前结束阻塞状态。 +提供了阻塞的 take() 和 put() 方法:如果队列为空 take() 将阻塞,直到队列中有内容;如果队列为满 put() 将阻塞,指到队列有空闲位置。 -阻塞队列的 take() 和 put() 方法是线程安全的。 +它们响应中断,当收到中断请求的时候会抛出 InterruptedException,从而提前结束阻塞状态。 + +是线程安全的。 **使用 BlockingQueue 实现生产者消费者问题** ```java // 生产者 -import java.util.concurrent.BlockingQueue; - public class Producer implements Runnable { private BlockingQueue queue; @@ -322,8 +333,8 @@ public class Producer implements Runnable { @Override public void run() { - System.out.println(Thread.currentThread().getName() + " is making product..."); - String product = "made by " + Thread.currentThread().getName(); + System.out.println(Thread.currentThread().getName() + " is making product."); + String product = "Made By " + Thread.currentThread().getName(); try { queue.put(product); } catch (InterruptedException e) { @@ -335,8 +346,6 @@ public class Producer implements Runnable { ```java // 消费者 -import java.util.concurrent.BlockingQueue; - public class Consumer implements Runnable { private BlockingQueue queue; @@ -347,8 +356,8 @@ public class Consumer implements Runnable { @Override public void run() { try { - String product = queue.take(); - System.out.println(Thread.currentThread().getName() + " is consuming product " + product + "..."); + String product = queue.take(); + System.out.println(Thread.currentThread().getName() + " is consuming product." + "( " + product + " )"); } catch (InterruptedException e) { e.printStackTrace(); } @@ -358,21 +367,18 @@ public class Consumer implements Runnable { ```java // 客户端 -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; - public class Client { public static void main(String[] args) { BlockingQueue queue = new LinkedBlockingQueue<>(5); for (int i = 0; i < 2; i++) { - new Thread(new Consumer(queue), "Consumer" + i).start(); + new Thread(new Consumer(queue), "Consumer-" + i).start(); } for (int i = 0; i < 5; i++) { // 只有两个 Product,因此只能消费两个,其它三个消费者被阻塞 - new Thread(new Producer(queue), "Producer" + i).start(); + new Thread(new Producer(queue), "Producer-" + i).start(); } for (int i = 2; i < 5; i++) { - new Thread(new Consumer(queue), "Consumer" + i).start(); + new Thread(new Consumer(queue), "Consumer-" + i).start(); } } } @@ -380,16 +386,16 @@ public class Client { ```html // 运行结果 -Producer0 is making product... -Consumer0 is consuming product made by Consumer0... -Producer1 is making product... -Consumer1 is consuming product made by Consumer1... -Producer2 is making product... -Producer3 is making product... -Producer4 is making product... -Consumer2 is consuming product made by Consumer2... -Consumer3 is consuming product made by Consumer3... -Consumer4 is consuming product made by Consumer4... +Producer-0 is making product. +Consumer-0 is consuming product.( Made By Producer-0 ) +Producer-1 is making product. +Consumer-1 is consuming product.( Made By Producer-1 ) +Producer-2 is making product. +Producer-3 is making product. +Producer-4 is making product. +Consumer-2 is consuming product.( Made By Producer-2 ) +Consumer-3 is consuming product.( Made By Producer-3 ) +Consumer-4 is consuming product.( Made By Producer-4 ) ``` # 五、线程状态转换 From 185c4e52a32fd73c663945e8f0f0407006352c44 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 13:10:44 +0800 Subject: [PATCH 05/17] auto commit --- notes/Java 并发.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/notes/Java 并发.md b/notes/Java 并发.md index cf9a6461..0f877ec6 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -176,7 +176,9 @@ main() 属于非后台线程。 阻塞是一种状态,而睡眠和挂起是一种手段,通过睡眠和挂起可以让一个线程进入阻塞状态。 -睡眠和挂起这两种手段的区别是,一个使用睡眠方式阻塞的线程在一个指定的时间之后(Thread.sleep(millisec) 的 millisec 参数指定)会退出阻塞状态,而一个使用挂起方式阻塞的线程必须等到其它线程给它发消息它才能退出阻塞状态。 +睡眠和挂起这两种手段的区别是,挂起手段会释放对象锁,而阻塞手段不会。 + +应该注意的是,睡眠和挂起都可以设置一个等待时间,超过等待时间之后,线程会退出阻塞状态。但是如果不为挂起设置等待时间,那么它只能等到通知的到来才能退出阻塞状态。 ## 中断 @@ -305,7 +307,6 @@ public synchronized void before() { 1. wait() 是 Object 类的方法,而 sleep() 是 Thread 的静态方法; 2. 挂起会释放锁,睡眠不会。 -3. 挂起必须等待其它线程的通知才能结束阻塞状态,而睡眠会在一定的时间之后自动结束。 ### 2. BlockingQueue @@ -405,9 +406,9 @@ Consumer-4 is consuming product.( Made By Producer-4 ) 1. 新建(New):创建后尚未启动; 2. 可运行(Runnale):可能正在运行,也可能正在等待 CPU 时间片; 3. 无限期等待(Waiting):等待其它线程显示地唤醒,否则不会被分配 CPU 时间片; -4. 限期等待(Timed Waiting):无序等待其它线程显示地唤醒,在一定时间之后会被系统自动唤醒; +4. 限期等待(Timed Waiting):无需等待其它线程显示地唤醒,在一定时间之后会被系统自动唤醒; 5. 阻塞(Blocking):等待获取一个排它锁,如果其线程释放了锁就会结束此状态; -6. 死亡(Terminated) +6. 死亡(Terminated):可以是线程结束任务之后自己结束,或者产生了异常而结束,中断机制就是使用了抛出中断异常的方式让一个阻塞的线程结束。 # 六、Executor From 3c01b594900780932c1e2dc76841b13bc1020842 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 14:08:46 +0800 Subject: [PATCH 06/17] auto commit --- notes/Java 并发.md | 198 +++++++++++++------------------- notes/Java 虚拟机.md | 5 +- pics/600px-Sharedmem.jpg | Bin 0 -> 24576 bytes pics/class_loader_hierarchy.png | Bin 0 -> 125952 bytes pics/monitor-lock-rule.png | Bin 0 -> 25600 bytes pics/single-thread-rule.png | Bin 0 -> 16384 bytes pics/thread-join-rule.png | Bin 0 -> 24576 bytes pics/thread-start-rule.png | Bin 0 -> 23552 bytes pics/volatile-variable-rule.png | Bin 0 -> 30720 bytes 9 files changed, 81 insertions(+), 122 deletions(-) create mode 100644 pics/600px-Sharedmem.jpg create mode 100644 pics/class_loader_hierarchy.png create mode 100644 pics/monitor-lock-rule.png create mode 100644 pics/single-thread-rule.png create mode 100644 pics/thread-join-rule.png create mode 100644 pics/thread-start-rule.png create mode 100644 pics/volatile-variable-rule.png diff --git a/notes/Java 并发.md b/notes/Java 并发.md index 0f877ec6..3067f275 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -18,26 +18,20 @@ * [线程通信](#线程通信) * [五、线程状态转换](#五线程状态转换) * [六、Executor](#六executor) -* [七、volatile](#七volatile) - * [保证内存可见性](#保证内存可见性) - * [禁止指令重排](#禁止指令重排) -* [八、内存模型](#八内存模型) - * [1. 硬件的效率与一致性](#1-硬件的效率与一致性) - * [2. Java 内存模型](#2-java-内存模型) - * [3. 主内存与工作内存](#3-主内存与工作内存) - * [4. 内存间交互操作](#4-内存间交互操作) - * [5. 内存模型三大特性](#5-内存模型三大特性) - * [6. 先行发生原则](#6-先行发生原则) -* [九、线程安全](#九线程安全) +* [七、内存模型](#七内存模型) + * [主内存与工作内存](#主内存与工作内存) + * [内存模型三大特性](#内存模型三大特性) + * [先行发生原则](#先行发生原则) +* [八、线程安全](#八线程安全) * [1. Java 语言中的线程安全](#1-java-语言中的线程安全) * [2. 线程安全的实现方法](#2-线程安全的实现方法) -* [十、锁优化](#十锁优化) +* [九、锁优化](#九锁优化) * [1. 自旋锁与自适应自旋](#1-自旋锁与自适应自旋) * [2. 锁消除](#2-锁消除) * [3. 锁粗化](#3-锁粗化) * [4. 轻量级锁](#4-轻量级锁) * [5. 偏向锁](#5-偏向锁) -* [十一、多线程开发良好的实践](#十一多线程开发良好的实践) +* [十、多线程开发良好的实践](#十多线程开发良好的实践) * [参考资料](#参考资料) @@ -427,70 +421,23 @@ for(int i = 0; i < 5; i++) { } ``` -# 七、volatile +# 七、内存模型 -保证了内存可见性和禁止指令重排,没法保证原子性。 - -## 保证内存可见性 - -普通共享变量被修改之后,什么时候被写入主存是不确定的。 - -volatile 关键字会保证每次修改共享变量之后该值会立即更新到内存中,并且在读取时会从内存中读取值。 - -synchronized 和 Lock 也能够保证内存可见性。它们能保证同一时刻只有一个线程获取锁然后执行同步代码,并且在释放锁之前会将对变量的修改刷新到主存当中。不过只有对共享变量的 set() 和 get() 方法都加上 synchronized 才能保证可见性,如果只有 set() 方法加了 synchronized,那么 get() 方法并不能保证会从内存中读取最新的数据。 - -## 禁止指令重排 - -在 Java 内存模型中,允许编译器和处理器对指令进行重排序,重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。 - -volatile 关键字通过添加内存屏障的方式来禁止指令重排,即重排序时不能把后面的指令放到内存屏障之前。 - -可以通过 synchronized 和 Lock 来保证有序性,它们保证每个时刻只有一个线程执行同步代码,相当于是让线程顺序执行同步代码,自然就保证了有序性。 - -# 八、内存模型 - -## 1. 硬件的效率与一致性 +## 主内存与工作内存 对处理器上的寄存器进行读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。 -每个处理器都有一个高速缓存,但是所有处理器共用一个主内存,因此高速缓存引入了一个新问题:缓存一致性。当多个处理器的运算都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致。缓存不一致问题通常需要使用一些协议来解决。 +所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存中,保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的操作是对其工作内存中的变量进行操作来完成的。 -

+

除了增加高速缓存之外,为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果是一致的,但并不保证程序中各个语句计算的先后顺序与输入代码中的顺序一致,因此,如果存在一个计算任务依赖另外一个计算任务的中间结果,那么其顺序性并不能靠代码的先后顺序来保证。与处理器的乱序执行优化类似,Java 虚拟机的即时编译器中也有类似的指令重排序(Instruction Reorder)优化。 -## 2. Java 内存模型 +## 内存模型三大特性 -Java 虚拟机规范中试图定义一种 Java 内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如 C/C++ 等)直接使用物理硬件和操作系统的内存模型,但由于不同平台上内存模型的差异,有可能导致程序在一套平台上并发完全正常,而在另外一套平台上并发访问却经常出错,因此在某些场景就必须针对不同的平台来编写程序。 +### 1. 原子性 -## 3. 主内存与工作内存 - -Java 内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variables)与 Java 编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不会存在竞争问题。 - -Java 内存模型规定了所有的变量都存储在主内存(Main Memory)中。每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,线程、主内存、工作内存三者的交互关系如图所示。 - -

- -## 4. 内存间交互操作 - -Java 内存模型定义了 8 种操作来完成工作内存与主内存之间的交互:一个变量从主内存拷贝到工作内存、从工作内存同步回主内存。虚拟机实现时必须保证下面提及的每一种操作都是原子的、不可再分的。 - -- lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。 -- unlock(解锁):作用于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。 -- read(读取):作用于主内存的变量,它把一个变量的值从主内存传输到线程的工作内存中,以便随后的 load 动作使用。 -- load(载入):作用于工作内存的变量,它把 read 操作从主内存中得到的变量值放入工作内存的变量副本中。 -- use(使用):作用于工作内存的变量,它把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用到变量的值的字节码指令时将会执行这个操作。 -- assign(赋值):作用于工作内存的变量,它把一个从执行引擎接收到的值赋给工作内存的变量,每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。 -- store(存储):作用于工作内存的变量,它把工作内存中一个变量的值传送到主内存中,以便随后的 write 操作使用。 -- write(写入):作用于主内存的变量,它把 store 操作从工作内存中得到的变量的值放入主内存的变量中。 - -## 5. 内存模型三大特性 - -### 5.1 原子性 - -除了 long 和 double 之外的基本数据类型的访问读写是具备原子性的。 - -Java 内存模型允许虚拟机将没有被 volatile 修饰的 64 位数据的读写操作划分为两次 32 位的操作来进行,即虚拟机可以不保证 64 位数据类型的 load、store、read 和 write 这 4 个操作的原子性。但是目前各种平台下的商用虚拟机几乎都选择把 64 位数据的读写操作作为原子操作来对待。 +Java 内存模型允许虚拟机将没有被 volatile 修饰的 64 位数据(long,double)的读写操作划分为两次 32 位的操作来进行,也就是说对这部分数据的操作可以不具备原子性。 AtomicInteger、AtomicLong、AtomicReference 等特殊的原子性变量类提供了下面形式的原子性条件更新语句,使得比较和更新这两个操作能够不可分割地执行。 @@ -508,80 +455,89 @@ public int next() { } ``` -如果应用场景需要一个更大范围的原子性保证,Java 内存模型还提供了 lock 和 unlock 操作来满足这种需求,尽管虚拟机未把 lock 和 unlock 操作直接开放给用户使用,但是却提供了更高层次的字节码指令 monitorenter 和 monitorexit 来隐式地使用这两个操作,这两个字节码指令反映到 Java 代码中就是同步块:synchronized 关键字,因此在 synchronized 块之间的操作也具备原子性。 +也可以使用 synchronized 同步操作来保证操作具备原子性,它对应的虚拟机字节码指令为 monitorenter 和 monitorexit。 -### 5.2 可见性 +### 2. 可见性 -可见性是指当一个线程修改了共享变量的值,其他线程能立即得知这个修改。 +如果没有及时地对主内存与工作内存的数据进行同步,那么就会出现不一致问题。如果存在不一致的问题,一个线程对一个共享数据所做的修改就不能被另一个线程看到。 -Java 内存模型是通过在变量修改后将新值同步回主内存,在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方式来实现可见性的,无论是普通变量还是 volatile 变量都是如此,普通变量与 volatile 变量的区别是,volatile 的特殊规则保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。因此,可以说 volatile 保证了多线程操作时变量的可见性,而普通变量则不能保证这一点。 +volatile 可以保证可见性,它在修改一个共享数据时会将该值从工作内存同步到主内存,并且对一个共享数据进行读取时会先从主内存同步到工作内存。 -除了 volatile 之外,Java 还有两个关键字能实现可见性,即 synchronized 和 final。同步块的可见性是由“对一个变量执行 unlock 操作之前,必须先把此变量同步回主内存中(执行 store、write 操作)”这条规则获得的,而 final 关键字的可见性是指:被 final 修饰的字段在构造器中一旦初始化完成,并且构造器没有把“this”的引用传递出去(this 引用逃逸是一件很危险的事情,其他线程有可能通过这个引用访问到“初始化了一半”的对象),那在其他线程中就能看见 final 字段的值。 +synchronized 也能够保证可见性,他能保证同一时刻只有一个线程获取锁然后执行同步代码,并且在释放锁之前会将对变量的修改刷新到主内存当中。不过只有对共享变量的 set() 和 get() 方法都加上 synchronized 才能保证可见性,如果只有 set() 方法加了 synchronized,那么 get() 方法并不能保证会从内存中读取最新的数据。 -### 5.3 有序性 +### 3. 有序性 -本线程内观察,所有的操作都是有序的;如果在一个线程中观察另一个线程,所有的操作都是无序的。前半句是指线程内表现为串行的语义,后半句是指指令重排和工作内存和主内存存在同步延迟的现象。 +在 Java 内存模型中,允许编译器和处理器对指令进行重排序,重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。 -Java 语言提供了 volatile 和 synchronized 两个关键字来保证线程之间操作的有序性,volatile 关键字本身就包含了禁止指令重排序的语义,而 synchronized 则是由“一个变量在同一个时刻只允许一条线程对其进行 lock 操作”这条规则获得的,这条规则决定了持有同一个锁的两个同步块只能串行地进入。 +volatile 关键字通过添加内存屏障的方式来禁止指令重排,即重排序时不能把后面的指令放到内存屏障之前。 -synchronized 关键字在需要这 3 种特性的时候都可以作为其中一种的解决方案,看起来很“万能”。的确,大部分的并发控制操作都能使用 synchronized 来完成。synchronized 的“万能”也间接造就了它被程序员滥用的局面,越“万能”的并发控制,通常会伴随着越大的性能影响。 +也可以通过 synchronized 来保证有序性,它保证每个时刻只有一个线程执行同步代码,相当于是让线程顺序执行同步代码,自然就保证了有序性。 -## 6. 先行发生原则 +## 先行发生原则 -如果 Java 内存模型中所有的有序性都只靠 volatile 和 synchronized 来完成,那么有一些操作将会变得很繁琐,但是我们在编写 Java 并发代码的时候并没有感觉到这一点,这是因为 Java 语言中有一个“先行发生”(Happen-Before) 的原则。这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依据。依靠这个原则,我们可以通过几条规则一次性地解决并发环境下两个操作之间是否可能存在冲突的所有问题。 +上面提到了可以用 volatile 和 synchronized 来保证有序性。除此之外,JVM 还规定了先行发生原则,让一个操作无需控制就能先于另一个操作完成。 -先行发生是 Java 内存模型中定义的两项操作之间的偏序关系,如果说操作 A 先行发生于操作 B,其实就是说在发生操作 B 之前,操作 A 产生的影响能被操作 B 观察到,“影响”包括修改了内存中共享变量的值、发送了消息、调用了方法等。 +主要有以下这些原则: -```java -// 以下操作在线程 A 中执行 -k = 1; -// 以下操作在线程 B 中执行 -j = k; -// 以下操作在线程 C 中执行 -k = 2; -``` +### 1. 单一线程原则 -假设线程 A 中的操作“k=1”先行发生于线程 B 的操作“j=k”,那么可以确定在线程 B 的操作执行后,变量 j 的值一定等于 1,得出这个结论的依据有两个:一是根据先行发生原则,“k=1”的结果可以被观察到;二是线程 C 还没“登场”,线程 A 操作结束之后没有其他线程会修改变量 k 的值。现在再来考虑线程 C,我们依然保持线程 A 和线程 B 之间的先行发生关系,而线程 C 出现在线程 A 和线程 B 的操作之间,但是线程 C 与线程 B 没有先行发生关系,那 j 的值会是多少呢?答案是不确定!1 和 2 都有可能,因为线程 C 对变量 k 的影响可能会被线程 B 观察到,也可能不会,这时候线程 B 就存在读取到过期数据的风险,不具备多线程安全性。 +> Single thread rule -下面是 Java 内存模型下一些“天然的”先行发生关系,这些先行发生关系无须任何同步器协助就已经存在,可以在编码中直接使用。如果两个操作之间的关系不在此列,并且无法从下列规则推导出来的话,它们就没有顺序性保障,虚拟机可以对它们随意地进行重排序。 +在一个线程内,在程序前面的操作先行发生于后面的操作。 -- 程序次序规则(Program Order Rule):在一个线程内,按照程序代码顺序,书写在前面的操作先行发生于书写在后面的操作。准确地说,应该是控制流顺序而不是程序代码顺序,因为要考虑分支、循环等结构。 -- 管程锁定规则(Monitor Lock Rule):一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。这里必须强调的是同一个锁,而“后面”是指时间上的先后顺序。 -- volatile 变量规则(Volatile Variable Rule):对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作,这里的“后面”同样是指时间上的先后顺序。 -- 线程启动规则(Thread Start Rule):Thread 对象的 start() 方法先行发生于此线程的每一个动作。 -- 线程终止规则(Thread Termination Rule):线程中的所有操作都先行发生于对此线程的终止检测,我们可以通过 Thread.join() 方法结束、Thread.isAlive() 的返回值等手段检测到线程已经终止执行。 -- 线程中断规则(Thread Interruption Rule):对线程 interrupt() 方法的调用先行发生于被中断线程的代码检测到中断事件的发生,可以通过 Thread.interrupted() 方法检测到是否有中断发生。 -- 对象终结规则(Finalizer Rule):一个对象的初始化完成(构造函数执行结束)先行发生于它的 finalize() 方法的开始。 -- 传递性(Transitivity):如果操作 A 先行发生于操作 B,操作 B 先行发生于操作 C,那就可以得出操作 A 先行发生于操作 C 的结论。 +

-```java -private int value = 0; -pubilc void setValue(int value) { - this.value = value; -} -public int getValue() { - return value; -} -``` -上述代码显示的是一组再普通不过的 getter/setter 方法,假设存在线程 A 和 B,线程 A 先(时间上的先后)调用了“setValue(1)”,然后线程 B 调用了同一个对象的“getValue()”,那么线程 B 收到的返回值是什么? +### 2. 管程锁定规则 -我们依次分析一下先行发生原则中的各项规则,由于两个方法分别由线程 A 和线程 B 调用,不在一个线程中,所以程序次序规则在这里不适用;由于没有同步块,自然就不会发生 lock 和 unlock 操作,所以管程锁定规则不适用;由于 value 变量没有被 volatile 关键字修饰,所以 volatile 变量规则不适用;后面的线程启动、终止、中断规则和对象终结规则也和这里完全没有关系。因为没有一个适用的先行发生规则,所以最后一条传递性也无从谈起,因此我们可以判定尽管线程 A 在操作时间上先于线程 B,但是无法确定线程 B 中“getValue()”方法的返回结果,换句话说,这里面的操作不是线程安全的。 +> Monitor Lock Rule -那怎么修复这个问题呢?我们至少有两种比较简单的方案可以选择:要么把 getter/setter 方法都定义为 synchronized 方法,这样就可以套用管程锁定规则;要么把 value 定义为 volatile 变量,由于 setter 方法对 value 的修改不依赖 value 的原值,满足 volatile 关键字使用场景,这样就可以套用 volatile 变量规则来实现先行发生关系。 +一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。 -通过上面的例子,我们可以得出结论:一个操作“时间上的先发生”不代表这个操作会是“先行发生”,那如果一个操作“先行发生”是否就能推导出这个操作必定是“时间上的先发生”呢?很遗憾,这个推论也是不成立的,一个典型的例子就是多次提到的“指令重排序”。 +

-```java -// 以下操作在同一个线程中执行 -int i = 1; -int j = 2; -``` +### 3. volatile 变量规则 -代码清单的两条赋值语句在同一个线程之中,根据程序次序规则,“int i=1”的操作先行发生于“int j=2”,但是“int j=2”的代码完全可能先被处理器执行,这并不影响先行发生原则的正确性,因为我们在这条线程之中没有办法感知到这点。 +> Volatile Variable Rule -上面两个例子综合起来证明了一个结论:时间先后顺序与先行发生原则之间基本没有太大的关系,所以我们衡量并发安全问题的时候不要受到时间顺序的干扰,一切必须以先行发生原则为准。 +对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。 -# 九、线程安全 +

+ +### 4. 线程启动规则 + +> Thread Start Rule + +Thread 对象的 start() 方法先行发生于此线程的每一个动作。 + +

+ +### 5. 线程加入规则 + +> Thread Join Rule + +join() 方法返回先行发生于 Thread 对象的结束。 + +

+ +### 6. 线程中断规则 + +> Thread Interruption Rule + +对线程 interrupt() 方法的调用先行发生于被中断线程的代码检测到中断事件的发生,可以通过 Thread.interrupted() 方法检测到是否有中断发生。 + +### 7. 对象终结规则 + +> Finalizer Rule + +一个对象的初始化完成(构造函数执行结束)先行发生于它的 finalize() 方法的开始。 + +### 8. 传递性 + +> Transitivity + +如果操作 A 先行发生于操作 B,操作 B 先行发生于操作 C,那么操作 A 先行发生于操作 C。 + +# 八、线程安全 《Java Concurrency In Practice》的作者 Brian Goetz 对“线程安全”有一个比较恰当的定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的”。 @@ -830,7 +786,7 @@ incrementAndGet() 方法在一个无限循环中,不断尝试将一个比当 Java 语言中,如果一个变量要被多线程访问,可以使用 volatile 关键字声明它为“易变的”;如果一个变量要被某个线程独享,Java 中就没有类似 C++中 \_\_declspec(thread)这样的关键字,不过还是可以通过 java.lang.ThreadLocal 类来实现线程本地存储的功能。每一个线程的 Thread 对象中都有一个 ThreadLocalMap 对象,这个对象存储了一组以 ThreadLocal.threadLocalHashCode 为键,以本地线程变量为值的 K-V 值对,ThreadLocal 对象就是当前线程的 ThreadLocalMap 的访问入口,每一个 ThreadLocal 对象都包含了一个独一无二的 threadLocalHashCode 值,使用这个值就可以在线程 K-V 值对中找回对应的本地线程变量。 -# 十、锁优化 +# 九、锁优化 高效并发是从 JDK 1.5 到 JDK 1.6 的一个重要改进,HotSpot 虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等。这些技术都是为了在线程之间更高效地共享数据,以及解决竞争问题,从而提高程序的执行效率。 @@ -917,7 +873,7 @@ public static String concatString(String s1, String s2, String s3) { 偏向锁可以提高带有同步但无竞争的程序性能。它同样是一个带有效益权衡(Trade Off)性质的优化,也就是说,它并不一定总是对程序运行有利,如果程序中大多数的锁总是被多个不同的线程访问,那偏向模式就是多余的。在具体问题具体分析的前提下,有时候使用参数 -XX:-UseBiasedLocking 来禁止偏向锁优化反而可以提升性能。 -# 十一、多线程开发良好的实践 +# 十、多线程开发良好的实践 1. 给线程起个有意义的名字,这样可以方便找 Bug; @@ -935,3 +891,5 @@ public static String concatString(String s1, String s2, String s3) { - [Java 线程面试题 Top 50](http://www.importnew.com/12773.html) - [BlockingQueue](http://tutorials.jenkov.com/java-util-concurrent/blockingqueue.html) - [thread state java](https://stackoverflow.com/questions/11265289/thread-state-java) +- [CSC 456 Spring 2012/ch7 MN](http://wiki.expertiza.ncsu.edu/index.php/CSC_456_Spring_2012/ch7_MN) +- [Java - Understanding Happens-before relationship](https://www.logicbig.com/tutorials/core-java-tutorial/java-multi-threading/happens-before.html) diff --git a/notes/Java 虚拟机.md b/notes/Java 虚拟机.md index 1735580a..81c5dff0 100644 --- a/notes/Java 虚拟机.md +++ b/notes/Java 虚拟机.md @@ -125,7 +125,7 @@ objB.instance = objA; 通过 GC Roots 作为起始点进行搜索,能够到达到的对象都是都是可用的,不可达的对象可被回收。 -

+

GC Roots 一般包含以下内容: @@ -620,7 +620,7 @@ public static void main(String[] args) { 应用程序都是由三种类加载器相互配合进行加载的,如果有必要,还可以加入自己定义的类加载器。下图展示的类加载器之间的层次关系,称为类加载器的双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器,这里类加载器之间的父子关系一般通过组合(Composition)关系来实现,而不是通过继承(Inheritance)的关系实现。 -

+

**(一)工作过程** @@ -692,3 +692,4 @@ java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC - [Android on x86: Java Native Interface and the Android Native Development Kit](http://www.drdobbs.com/architecture-and-design/android-on-x86-java-native-interface-and/240166271) - [深入理解 JVM(2)——GC 算法与内存分配策略](https://crowhawk.github.io/2017/08/10/jvm_2/) - [深入理解 JVM(3)——7 种垃圾收集器](https://crowhawk.github.io/2017/08/15/jvm_3/) +- [JVM Internals](http://blog.jamesdbloom.com/JVMInternals.html) diff --git a/pics/600px-Sharedmem.jpg b/pics/600px-Sharedmem.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76cb2a486490fc463a056c4c68934dc2beb969eb GIT binary patch literal 24576 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/pics/monitor-lock-rule.png b/pics/monitor-lock-rule.png new file mode 100644 index 0000000000000000000000000000000000000000..6590d94bff323fed200229525a48daf30d5ad601 GIT binary patch literal 25600 zcmeFYWmMcv(>@phf)m^!xVw9TyAJN|F2PA~clSYuL4!LX!QI{6NzmXsB)Q+`e$Kx8 zKl^ph*-w-63*B8+U3Jyf)zx8&@)Ah!c5^Csv{dpup1gS9!k+ntL&s+KbNOdbm*%=wkE^D9~fIX%?3v?`KM zF9YBL@2WdF4PMv({M`BL>znq|yL#`wc!n4g&19STGoMg=eQumyg0v^L2e5t;*u2NM zq{vI$vpwf}Q=zn_IoeU+0ib$)Q5%jf3`})V_1uG;n=Raz0Bhu$oO~>_i;izHJUJ=A8NtNR8zW z2$s$RuCy(v-p#r+Q6FA5+`6^B#mBzgs-Jxq0YEP7!MeF5Kc`bz)z%jhp+&f245jo9uMf1_X#z4sAoy=1W5_gMX z*3BbnLvXS7L{e%2Q9pLMkctYV@))@mQR4MC+Pcz`@ZFPXQTvZcL_~(mmcEnAjIRLD zuiup{nEHKk+n9oA15cGPi5`FVY@^g*ts{LsbmVoW*DHc{3J*bzBWOc(EgeVm2ICXy zo3|c4_!W#WOcw`l`cHvo8g{QYr8+#*(tw;rI(6d4-f!RnjGQT9vIn|1pIzeXZ* zq*8uXTF0kzfG*Vy+w2z{ z#8?bKMQ>7fwsb>d?uB!{0E-xA*|WFk+6LnAteTxv$Pr>E6j9U{0msr;FN>ZsEkOmE zA|e#yV`GZ1ubI&KCULEraka@9FL3d#7Muda3brJXICOtYU<}&N;#O^m_xWUI>Yw90 zrZ}nkcYixs0f#i0r?*7RQw7#BNJV^7c37MXic!`+!P_tql2YQq3!zR4t0G9zYz1Qg z6@>`Eu~jTEaWPl7bF|4$q1w$<3s=|)8{)k%gNo&*@4dEX8Zs{wLT)F^OytwLFyko@ z%EYC!A$v$qO0my2#Xm_kX=!?EV!7be)xJ`td)4fZ+3EB!IjPQl?2;C{6!h#CoKxiJ ziR8fxYoc@qljM%kCKa*ln%^xm<7{Dm3*{-%^p!aYaUhDS#Lb7?R;xOOVmkm(vWSV} zhx4&B!Dr;MxVXYWTAzx1_SwX+I93h{P9ky!`n?QP+?mc$=UlTmE?;@?!D3uO|Qp7tcbrArRpo2jO`7JklCF+H(DQB-oEJ)+Tg3dGtB{l;TvXThaSke zfWVo!Fv0QSnDY~J3uzlFIkGR4jag(N05jf|z|no0Dqguy)}PhB4t+?XiIdLp2P*-< zyG3{^=}#Z>i_yH!99OzWpk;XN^<07{Ri19D@@;uB$~UxPH3yG=piy1ehiE#v@s$ zx4)H~)N%bX<1jQiY~N8b_YSVf+?ZA^p}UQM{K7IKYlSqPcG%?uVMEbGajuAE9PeY2 zkZY#AWcI`mRK|*;qvwftadN@uU@ZyCTXuD0z>5z)>7&R{bwH9Pk}q}C1thmq`9*oT zZu4o)(c9o`XSpW@ZopOi)Cx+rfP5K3U+{e` zUY-I&U+w#0&LlxsS9P#S@X=HVJ#4=OMDs};u;A@iK8_|7q`GMOeU;)c!h3UqSiML& zjM5-!!SrLt$N0FNvQh3mt%__+Q8AqR_(-dakEW83&)QBYD)F98;W~hwrB2@eS=HW; zXjcwi6@RWio0fmXuU&tVU{`217xERi;KrObYF~Cr=OfyMwu{aO(i<5z^fJq#5`UE2 z--=cjj5cx!a&#QJWm3uODpp4e`{E=YFl#z3)}4}ZNJ{0ehDd=G&hy@40Gsd#_@yQF z#xkMs6|6zj$Tz23qf=Y2A=b(b&w5O7EkRB@72#fMtFS44x~wa(#NgqbzdH^!c%?bl zsU(od&ei|Yvq!1aC4$`+)y?CSPt1E@5kxK|HQApqK$QZG&jrRt3}=tAXbQ$7fUBRY z62cR9iZST0{bK0HPHvtHWCbb2zk#~5jX=7~C*ctpyYC&a+N+aBVpYpFx!# zE(o-w8PzR3D#G@wmQ`3^A2~SMfF{V<&)8xV1O!RQD`S1>d^9kvuP@DBLd>Y$DT0 z38o#u_&~(#vbWY5KwNqO9kD{Um{DhHjS0j)noeFez!Xvb zYj&7&;q$B0)eigB_BOBUlldC+>yzacx8vJSv6*iOF_$s3uynBrah7qiaCPwr@t66~ z!pz{{li6Q8$yM1QVqW&-uG#zD;p3gJhY;rlowi-CEZTRp+4e@O?_%j+5B##mjpT=O znLX6Y`qbFI+J&!|adEp*z3g?BXPobqpAf<{Zu7pAHC=8i(SQ&KjOeQ5HPp_c{E5}t z+PcAJe!}`T&+pM$0VW@}YmI_#yluRn4EL%z$lsLxE>yY-8S(ObRH*kJkL*?GdDh33 z`FdMzIXO8GF=(yJXbV_2YyollpY0+?_^S+{d3l;W ze;rC910h2NNim*>O0=|mJgq1%?^eX#pr@yAtvx)nKnrP(G<&<(vo~b!LKG=a^q4x! zfI*)>FA?bPY5)pBCS2(76B2LHuD2;EE2F2SO=mM7VdA@%Nbr|4Wjw*kDXaR?sWRPJ6%JI3v-I=<(I`+CdZs4++Q&dw^Q&eO&9Y{prrBwS8aBKn@ zE}FBqwRf=hWACaS?FdY zvfqM}YHCGLVG4ZRR8;M7@hsu8H?%=Q$6 zP)e)52^RfrNV>aiQTTdXh{(gPB4P^PaE>!)cJpfL&&2(z$AG%%ZEqzCy$tdDe^Awn zAv*E8ZRj6ixEj8;d@C7q>_zOJ+cSw%Pw@rzg`bi3K+*_Z&c zKP~{h_`Kyi%|Ph}k&X|&!j-~QYxtf6ChNL&T2HW_ksRwO} zjxc=kEXqH1aV0R2N;%HR2aEqUi%e(zvs*XWfk?yDvaejYDZ!;bgPrzlt=r5Gv~C9C zpe7^|uEYwavf?}J`na`33;p9584*O&#m`W`?2AYFEsB7P=iRPn6LXzQQa!>EB^i9I zx@+mlt3*pJ6*IxQB7%i#;>NBWQy*T>A3z7ivHy;Qxg8RXE!obZ7!Xv(VX)Sw?#cK~ z`+j+U-&Z;4fJdq}>5CFwot9jh*GSIAg$nbQ+mwF7m>-6rE@>i!!G@Y)%0AM4+`0;J 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 literal 0 HcmV?d00001 diff --git a/pics/single-thread-rule.png b/pics/single-thread-rule.png new file mode 100644 index 0000000000000000000000000000000000000000..d6583e9e64e85f0b1a1d636f71d23b733973abea GIT binary patch literal 16384 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%0Djr9jveN3pWpmm@_JpnVT7Kd@HB#?z*Mt$ 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 H>;Jz1MC_0C literal 0 HcmV?d00001 diff --git a/pics/thread-start-rule.png b/pics/thread-start-rule.png new file mode 100644 index 0000000000000000000000000000000000000000..60ee78622c0956117d7cbc0324b4ae37da12d394 GIT binary patch literal 23552 zcmd43Wl&sQ(>6M|1rHE>0t7;Ehu{GM1SbRu?(XgoNN^b3-Ccuga1ZY8?rvwp^W3j} z@2NUgTq0=VuQ!UQp2wbcJT-b@d&aHD28IszfcH#0Y2o5 zV8x!l4-5xUKYub|f!_h2)SscVo}cLy^NIpKv)&*J)-UhpiW;93yhD8` zE=pj<@;N93x(aTVuekSJy`yBS(}Ax_#l50jgrN0`8r$W?BHl%rzlW0FHN^sFFUH_4 z-FL<&^dF)`f zVZEQju6B_8ftJ{B4XbmYzeg>K=D2@rKfw0IuGAK$!WKa@B2WrCYkY1O8l2ed>HJab zD0%*W1NE&wTu)e!WbQftRa<2oq}BG0I;i-T^*Z!e3Y?z+M`|W;1T=nlFX=n(P|U5Y zA6_hr46hxW8g8LYM$LSen)UhbAssA$_y=HaGfeSGRm$D$q+RCrkF;wqFzuz8q z_G6;?AyGX_&moDM_y;T`h`ePXir0Xx!==pO;>Rx% zYSn6@X>^*^#L+Z<(vK+rh*K2~AxkFzI*y?r6jQ@ajm4$w=sT=&AnLnHS7Mopp=de- zX~mP7&%jHyp5C7CKf?65JqtzQStws#Lx?jnYDvCt;yZo_BUB6SrK4BbTDRVl2XBNG z6Uf!eRnL13pcJTa*@0Pu2$Z}K!E0zr18uQcI?*8Ni|PnCy~QE%puCc4{J24uM~yMD z3fXf1dLEXBsc@YtJO*Z#^XO0kRzD(Zy&O zLP7ZX<|?jw*#$NZyt8o?>;78D?d}Q%(JZr4jfE+imNLY_lNPys1M^xvL(H%bH>SX6 zwGuUo!|!+`;XPWW?dqg`C=tN_&;KU^G^M4rOC1iQ(fCo|g#6!t1pj{ktmjRW+u@(! zY}Di1u7{NhjnT(g=?bwp#8`3prx=2wD99}ySaeXs^R9jD>`u8Ke|+c4?Z)E`e><&< zxREg}7Uds(O!JwChy%2o_Ra_evfXx6T-vZh6fC8ZCA3Aq{A>;RCuoWSu&FsoW_h%Z z>)FQ9W|}t2pMO6)iPdpiYU#Ndt)z)E6)vyz1fAt6czcl=Qn|aW*%7@BmyZ;iDyTaK zm#>fkEIo;JKf}+ba|ca7%eVPm?#tH)6i9QCTw5J(c@sdzC^@#GLdnvh=GaUb0+w!q z5ZW&?Nic5$hf**ZvdUXk3a^nrKH0BNJ9hU7uWVJ5&Df`ta8j`2uqh+5VIo`eHGLzmGByvT9jQtWvOcGvW$!|Xd#4%qMRr>hZXLr39AtHM1#g29m?(gmcb;&^NUUM<|%=>Y}pafdw`DJ5m`g0%3a`w!Zs*yd~iv(V}J|PW-iagz9G% z&PLck0$XE-lh%)wX08f#PgImWQa4MeUmR3CG&yKLNF$z|!8fU;3$^1jIjp%$hXgqo zs`OV%0|o#7xQMr#E10}^bZb7#L#Yjo`l=eo8T}*kIvXu^l`|8m=l7wwVIEZ1quzzZ zJh{rLySWMp-2wE-FY@B~VQk7UdPRcWMjWM4%`c>_U)jLAQ$FrKjwww#$#!yWuG9!f zOm5nw9US^Rl#F$K50znSC>fYoeBUsxKh~-FShZ&){z2}d96pg0qTJ+^va>&o1)fVb z4PUy`#`!qAcwc^Qq|U*@L4o#Bd%(=Hdff7@QBzWUVbkwASL`@=^Ass!w35ts`N9+3 z1VuRLwQT2q(u&kK3kEOiUkDnHzue3W69lT*IMp);4b)RP&~cjO*IADtB;t7%eZ?hF+$`1a}H z_LUfB-V-#|Z#U1&p>nmL`>j1qhtk~HRCl)z>>&XXhP94oqS$5Ra1!QnW)=fb2iOum z#Rz?s4C72!&0nr@P=&r^=krAKRNuU|^)WvS#QRNPe3C~B#q5$jX-P~%ApU_*WY4_C z-pMGdibCL0)X(p8M4-%w%iQySQqx_K|I3Hk0*o!-7Rmolcj&_#u;x+T6h*%9YlVd} z1Br-n&55r9r%6952MVQ2In|@GBCz)8_R8L}6zxS&T(DdqLWIc!oL2t)wA~s?=5@W) z&t(B1MJGgLLImzJ8zn0B)%UiW?BBnCXJ>D$_eN4lCvke* zUzh84hklVCLBYY9z=_8FhKKWJ;!QOEHv$~OiH0Y}2*FAUoR&ZJiCOhXVo_L1Gh4%{ z-81Xs`CmCZiTK>Em)m??FArQzRth}deBAKtvk7=JaY34rfV^~iUR8>o_&8sYutp`F zp_A#78Id~=9vj)4X@I>C#}xm7Gh-w+%FDX|wZ2F1(6O^N5YJM34o{GnnCN&gdoi7q zZF#R5)@MU{+_UjJZ!vG(oim5MZwjv~bG+n2R|scu<58{*Z*`iDyaH%OX>vn7eo{T4V}TbVxvPTf5erh=A&u7ZKXCB=wz!z(d|k{^rjiF8E&mgnc^ zS65#)pHx~&xAner84ceUWiDX)aOU4C9>`V6lmWlYN*!hB}?tlxau91gIB++X;{`nI)sd6dwI$7;FtaG}9(Kppo$ zHD*KpJnvt;`)OXV07Zf99VF`;_Uz`DmX;P2d@s{#+d6WE&kjy8)vJ5$e)g9-Z}^#d zI7@r#peDZB4tQcsm!0e;*DH&;YV-CSDa-LVf3?-iZsAZ8?$9q9(~l|iFj!3cb+%jI zzkf#~;qf<6{QC8)iVBzQ=0MB!(`?Y21t=AI5p2lws(Ht7NA==g8?(`}ME4OtTFg{r zmy{fOgaq`scgA)J$0%e*oORWgq1q_{q%w#A#~vA-EKzT;TKNN9)~A~merka}_byn9 z4_pNwKe$09s`XVIpL7IZBcKtriqLJ>+H8DzUaX4<`=-O4T&@>|P}l(L(QgdPQZVW;6s4b?{f3&|@BU6(QGYZXN;+BVMuFI9GS3ly;5r(kUS>1y z`xC!$SjCu1s~*i!yurUE!5is|8Q_{zUD}d#QD$14!{Qi{7-~O zhUozm7#SeKMiV+~f%WhBc$Le=?#(pE*I! z3Eo)T*W-?gd1tEeMR~nR~Lajd?(COn; zw{?Z8*%`;J1qSHXxk~4?Aww#N)_iAG`#zZYgb>$lk1}@SVE5ZxCCU2WJfG@+T_(S+ z@1X;UZF&)Q{a3LnCqXzQoQoYZne-w7)qej{{7*=O17&@pc;ZI)(ssrVPR?s*6OoLk zoYv>XzD>i^^o#8I5}2)ets@GLZ;a(wcktDJNuR%=0;^#TaQifWqZdcjgy8B`t04v6abqBzJKKtBC+fH~ z2phM_H9NV1L~vFY-4FH1Mwp zjji%-#+DlXd`!QLsc;$9a$QwhIGq$v5w_$~6=uY?MQ%@CZH2(OvHA5jfXu-x7Kkxjxg5%=p9(~lppBzcZ zB#3wm;XmW=7m&R-fl8Kjl~Ca|F5@j%SAaV^(CMK>-k$FB;(}YkI2DGw4Cu*O$!%jJ zqH(sf=RyMRwJRxvXO5Yrc8{Kwn? ze9unQL&fll{h3r_t!iW&vd9o&{J+;w7+BXd-^=Sv2RW zDV0Io)$_y#s+)QEblR-IaS-%LzqV7>k~w-KbSyc3?izry1+nD3MWgd>A(PRb_B~J_ z(cMcHpA>r0NEre%88;Du99%(MB1lpBq@SQ}gAtxb;flUm6_3p)K>IHFz;rrg*^fI; zX+Z<<4XWScQj7`I9k;bO;vAz<@Z+ZmVD_wOy^S^vRLgOS&24|&cWpY6)P#J$>;47b zKrfu?{Fqbs7A8wSg1>9#ex2R=7EJdK&K?M5M5Lw8=^8TAuMWrs= z-v*P-O|!8}(%xDWw1Kx1%F;At=JdBm{cBnmzDfUPzc+_oH^B#W(fZ`u{w6*Le$+il z$n<09<99PbAM&fB@{qeI5%r4SeG7;|OO{7eU2YbRRz%?brV%K~>)#8^E3kcD1*$2; z4!yOCxPy?L{)$-lcro&bNQalJXv}Y(pBmg0Wya5{ikK-rR6bU2KdE2w);Q(kuH^zh z+nsqLc1&V<$YS}g2r08=j*->+Uu9fLNcfx%c#3Vr+3tR`4&xfy@{ z+xZy}FS6R;4cN5Iw|=9UDy39MQk6@keW;L0Nj{r2*+zG*VXaiL&Pok%PQG0+%MG8H z^FEZ19&9s7wxq8}*r6(uEV`fX!*RWE7O`lh4?;=XSO;K}&Orcems6q3R5E30reC{U zy(`(dxcHXXz5KE!B{y7^?&^-BTrMT8*ElAS%EDsg$nq^uhL>JSb$xuBkruxoB<#Td zB4;#)j#-bqn`uRba_XBE>zU*hXy+=ypdxWIU|@*Wq2RQC=jrY=wvR|5@jvCJf?9;6 zcGT6v;yfpv(!s7B#9n)Hx{MrfK=bBq8P>3Z4_l(B#^Xp#*P&`|I8wES=rrkPN#COE zppG8d>sMxb6|bQ65`b%o%MC8hPM5FvKBw~N!jZ(z=*r}8TutNZESBL?hSKi@WokY_MlmG%YyX-!36+K}wL*-)m{h`k@v&q^TW?RKnuk_@CPvaF zT7MXkhq(>>rDT95879jbZEn@09AWwow8K+Ooo=TMnqAm!S<(Pi9=asN`i_n94tiLt zAtq;8IL7LFiTg+O8r7!0Mb#;6G+o&ezV3Te`YhQ}<(ar|RrR;g zeFopr1dA(Aqny1AQTo*KuYSyAWH8$dP6&}xtpEn1943N>8Br*?a_nOwQQ;cABjE=^ zq!G@)3sTtY*lgs|DLKV$>(F|cuFT%r7&ZOzv~ys`Zj8Y0R~)r%=*$tt{UCAcAfHNf zh~30v$&KF#zhaEnc|9MuMh~pubOMd-ri#Nm0Ry5gk97;Y3T(x$WEH;sk24<@tU{A# zk8RT$Dpp_(PX$!kirxr9l_B-F&|Yo0q5lJZ-ab!1ChCW(l8tnv%M3Oxv!)D>9H@gJ zqcV_Q#W*kRMm3bv^ZtDfQXr`B(YvBa;AE`a5UKno$3^_?E5KyYZaL~MPHq3?xqBmQ zZ8IQro5J~QDv+nOkdSoY>3=!(;`|JO8kO0%9Z9WSB&>ULc(`@S(HE~@(%yb_e150i z*VwRx(7+9&3{S7$A_B?PG}x;fv}>#!W@v$826--{8zPK2qbAVACq26x&{=B2n@I1K zWP1dqo`?u|Q*rxV?0hSHzh?+4kus4?Yg7YNXyLq9Dim`9C$bo`eObeB9WDK_PLvAn z&hdRX$Nr~Arqtj)T~Oh4`LMkY4?_JAp)?Eog>65K7%pYCQfg39P@$xkDA{gs;xbQc??$+dQIUHLOY3t|9ZL|)@js3 z7>I)s6=}^C=}LFfN~Y+H&zV~dC_vv5zEz%7Zh&P?)});H6e*>7i!kD0*)qhH%NFuB zRSy4ANq0fA*AmepkYPN4)2TBz9ulsyvus6$t*f>+`!?+Aw_v73|TQ;G!hiUd;V6 z%Y+S|2?gyg8vEe~E!T@1PO%i)v(q*svuJ5W>Q_O6L&zvYUk<3-iz#Vr`=d%gkf2xu zi^j3&y7Y_tDF1P6&z=8tP_)YUXWnb8kAY5{$H(f_E(RCyWror%H4&`Wenr0V-nMfm`itOQ;IZkLmC<0(~~Y z*d~_LG)85FG_gfQ7jB&o==6_%s)iny5^_Y)k%=T8u$-`*H5UEC=n`5E5a!LbEAWkr z#lT83+dkq3aq+zX&ZerDe;gLn`^~dZ#kjTbcxe#xT91h?L`j5?Ylq5!D^tcLjUul7 zt>nG_7Yp@9S~`IKe_|cB^z;;dtK*KqZw#S{Q8&F!gqF7kul>+H9%JZN7$*hN7QWoB zn3lZNdb1c^Cn$_YqZ6Kv2%1|y?0(xcSv$d;X4M^?1E+f+1RF;iSd0e1!o4p0?;=K6dY@G1uZ4QjqI6On7!b z&7_Mwr**K?t}M#^DRa}jWaLJPbu#c_z(!`Dzk~WEc!SP*!4pM{rrT4M<>T$fK$!N= z(0(I-%T|sakBkb!_cPoJ@OcwP@=`aI`ggyS@2fdbSgVQ}Mv@j!sl9!X#v>3d zZ{#z!skOrINj#&SV?)ynHeUJFI0(Z21JUXi4c>Q?G9WsxAvE(qdJam5YHDZ}zxv!L zCkT5viM)iI$(Cj65zo*vG`4szda4T}OuIWkmqRUvs(45>G^XWB_Kb>V2M1zj-jUo6 z#3^TgQv65)nsR?Z=?EU?Q`f$b$p_s-@BW*quA?HU{~*=syX?uCXVX*L@RI!5)(T#h15nAf zDX$mx`U$T(v!ES14Wt2hUv7V$jPqXgE0~Uut3^Ci3?_s#?lZWK=K%jpdYgl5965VA zt>f^&?5H`6z5ml2a7ozw*LDylCPjqE)Zj}l;QxH|o#x6jvBbh1^047IFdZ~6(dU0k z9q%{5whSn;qkL^IM2F8xN7c{NNj%F1xSctuJzWRfcv9cdMDcL?<~s^H)%WBjhAt9W z-VaxBnVLyo6iCJSw2X8-%)i2b;?ZK5;$`#FKTk>c!Tl2CE^6u5Q2?e*3JJ0-sBTV9 zd3@#F;({2OLmgEY!1QG4++`k{$b#Nts}S1*TUNfF%rU*chX1b3;lUI-#_D*AWUj*1 z(eA=S2P2er9hI$)q`uZoMoRFXW7IDI>sLLm4+8;3U}h+RZaRwFk0aA|vEng;;m!7f z!})7cdU4_55Uby08*n7qz5a&bV@|}T$6;(HlTQlPaM{iXx*C7|ulzw1kcW7;^^)K? z*X5LL^MblurlNd>CFzrjcnWzXEJ*ar_}E~vM?`E`ua$1+hdom&OZXcavW*UeT-{;> zwJamm8mTuadmMg_R$7>fZ~4NJn5#Ni$F378&o~kInNH>xbRWJ!NK|g%7|$}G=2nMA zO6F!RnOXoW1+lYvx}v0Esn60FOua`yaTYQ@Mw47DZ>@xGa7P5?!)(44C$K(i`U7z4pt3J&(i$>nS<8jC&s@%ye zU1?)WDJn<0dAwHUH@N?m`VdjBMS`r@fF}Rhx3Ty~1MuQ{Sf?g+qj{@P@C)_gnq9jAkO%0G?L@pr8g+*2MYe;`JzB{N!{TwdE-1&AS8_d&NWRa!VjE_@=_?*afLy7I) zpZSDC5yjFI2UuKOg0VoLvva6(AHd()a zU(5q3<77tb$sM3*!PSv1*=x_BRx6-K!0^>e|KB82f*(YnB>c%P`$m^h{SGl0CiVTU z{K-oC!$m>`nG3zF;%Q?bK7&l;wtr*2sj;sM$uFy8_ ztcYg(-7RqMiFf{Lq;=`JxeE<xEEaZXmDibboElczV7wc0D&bYIC~Yi%li1waJv5iD}J;1;)qHjsBV| zt*!oprBA{~e|piS=#ULSSFTtda6rru%&3JW6dn_55=hRs?~P+6dc(Ii7AyZVX9o1# zc$~8u#L+*(@NSKj@H3Nj-tuN}g{nw|3ujU2dJ;ogc!VM@K6&OJL0N+EbM@kxH+X%q+qLe5waRnj%9VB6?m`cEE%)!7tS9Tt0^W*!K}uOZ$@b&~AA3T+(+X4UywgY-Byd6qx%svVcaqJR=%V-@uSEVfs18gTSRql;kD-ys|)oc%KwHe}zYDNIn$SG>8TC z3O3Y~eY`kNL#eKyK&SJx<$iB?&F<;)>6rB7>g$v`$J);uMEW^yb%}!RXd}HI{{`Xq z!F!HT})1~W8Y5XT_>#K0~Sh6MIhWM}`(5|->;oJ!HHm_t>Jk?7Ax?eQ=T zdi`)XCV5${+8~7BRduJuy_SPRBiQ%sB-H1X!SA*<*3(Iua+t#s;}xqhS)Qz_plG}~ z#!GF#AqLfM5PP=TK3qL*_<`TcPsT!1X1*o=5*h^Br~I_Ou{Y^)5-ap{HsyJGVCi{x z<@t0~=cDwrNOAZd^Zk#BerT7alAbALqnQx5~sce$?uAI00I zhm3j|NV@%Zif8>btw2mcrXWST=+o!7!g+NTh6n03SEUw9ztWJW^NI?fiE{@NRe@^X z1;@PC*vH{(Y`$~rl)a_LyOyUOY#9(sCl4e3ylsc~w@Z>zwHA+^go#>2CzB5Ur&CXL z2|Ff@eJ(uR5HnKuC$_1ko#I$=E-etjc)F0EbP7*^SAU-hK&_fyc&}M| z64XJ#tX?KmqufFQ+x2Uq$*k*F8b#XFCaaZ&r%Ovq*SR_6WzxpICIJPz z+)<7nN+|CwZ+De|3b|?A{{3{;vwu%3&}Te{Kw-t)ptIs@{M9dv485`p`j z65*7Z?O=s|f4#5xbDW~=6*X23Wpj`d;)M+2^4N{iCKpBXaO+8ZoJrk4pa@~?89E}p zU*q>MIM3Vt*7;$ z;TXQrezm*g_goswmEN%b*vtX3=O;>+RQ&yU&z8sCv@Yr0bvHLm&-Ts3vnr_rjPVzp z5*0Jn)^F`s8?O?PGz(*4*4wv24|R3JHgW?P4#PL~==CMO0U`H#WShHn9VnnXEI-q*;un;b*lg5T-(0qQ@E(K^Ye zuyZmBF&<|n8jVe>)xFcFHz1wMD^T&=AxRR!LFYehcuHtO@T2LfjIqClF7Frp0|^8i!R2t z{;i-mqx>&JVa-nj8YXII;bB%oxhebkI`U4YI?svd*NvP?QelHjk{FTen3 zeP;(Fjc#7bblZ?<$p;kef1=>M5yq`40KQU)^~1d6-rtZ61^ zy)D8B@A#uOT(D{=Nys*!OW>DA>u z!-A?8Egd!l5E8$~JtwHwRv3z~h~x|sH2K0j*!3<#%f*{9&1FkFx%8wzl=bVsTJCWB zDjyD0aS9Y**MZgmkXQ=2hU>v^U}MiX&6uFR=Qkta^#*gFkj+{(C3T^3UU_ErBI|o% z3wBzlH1OHp$rO|lW2n}3f8uwli&Rht#8lJ6#f;(ioa)2uKkd!WF|6~kYv3~!z`|IeR z=R%(;4|mfHw4meVZ~IW zhyJDCdamQ!7TLx@FnaAv?uCO#A&m|Ki74;e=wuJD!2D-$Iai{vV>I-!A4m==M%rarA8h(+`O>C9FY=e$` z%#r&v2dA3dyD+qdoluC;{wN}F1yKL+qQuw;di?CVQomZ>on(Mi=nbBEj|;}O%WpD~ zjtQE1W+GgVaPr^&KA=U2^!u|V2dR7qMDAhwYz(0Fj8(j%?uwu3c7%dVp-nrj4L%Yl zc3Sd!6t6Ooxnn!CXm5dT zO=%btPxx{2#NKfNI%__R?gfPQgAcqzj2ORLp#WLNmwgvtD5RHMJsukREv0NzEn)fZ zhgmJ`7*zBv)0_GSH_uKyU2_(LCvMbQE@)0i?k>&iVx#9=VT?K)E-^*VK3_#ZS@iVn zCw@yVoJ&NYznO)KpYvR;v@*OD*&2v6u5IzqRvzkijipOzIZ9s(O#~8{<(UQt`3|BF7Aarr+Y4->sa4{R{kz<3hj8w+s`=F)-Gj@63D{?dL=!l z4yUJjiQU0-x0ZxPOWfaV9l~-`VF~m0h;^l2Y~ZH4Bo%$ka{n5W=F^Y+wR+gfrp6FB zqyA4n{Y`9+{QA+wxr+rL&iw;77=5Kp9ka{q1MChYlW z-Y?R_fe4QGoH-@mZNfXP!30pQ-Kngu%yVHvQOkPd0epdd>82{B++y z2e4J*%gG2KT`(}J_Av>M0nNM_^$uR>SVNY!a!U5NNvJan+{~#aR|D_bASjS|dMLFu z-XkNz3VU0q2wjgy4sbE!#Ejv)O!XpMWTggItJw-UU0LZ%5Q~?=iQCXO!~WF0+UL~w zvy1C63}wtw-MD|)pgpWt*?>KfI*bGZfXysoVm0mX_1LJbDo~kdOLC{e>d7DaG&IbE z2cAjpH{O(y)o#|ug3EeJ7L&GW5agmG`8^l)1CjZ%HXZa_TzJ+xhb<_TsguGG*Lj53 zH%Tx+zQpy8>}no5awdS}zIF7Hr5OeP;1EaB3$^j<=BVO4Ic^*hOAQ*Kjd7^+l68?a zIs{^y^_pd7hh#u2tWeW{g(cs*W>`!0QTGk%VO==NVdB7N%A6W1CR(Y=tB0Pnq=^!z zIPrN6`V_8i>owRj?Ud>T6F_;pUxeo@;4tAqvCi!;yg~mT`i}z1*8fMnlZn6&C7+fA zm5S%z{f8A=2T@b4q=0PNC+U1hN#*MbkjJirj0f86ZmNvq3x@(CSacz?5U#y>JkyvfQd7QIt?^v@EF5B-MOCpJ46o^9BA@XpRr zwKTOMo#~0rndS8%Mi$*dE$Z3;owkRHKat|p@S!s{*nqj&cW&8VDZKbeju2II#iuz}^FRJJ5 z43=+9gmrpTc<8C7s*tV6?<)~Wvg$!sn)-O-eRJo>-3jX>mCh=hR*k;M?qr1ZTI;oO zt&L{AXYTPLP>6$mncE%N`i=B}|S_n80YayV_W7(rl-Py2|{!rra5W+A{P;X{YzTU~z; ziY`VWgqF04GIqv|4h|#bZ?;@&{`KouG>y_wJd5G|^$ExQy*2A}7jHx6lcNefT_!;$ zv*$e?xoof81faL5S45C?DOFsNBynjql6qU>Fpv+NryxNnN;Q|$zMZAKxosO!z$lsm zdd!5%dz%C}&P_hr&UFF9HcGmj1Kl3Ta}={PxEJ@0n`12 zPtqCC*1$du^qHn`TI)PLKK!>XP>uwKeQSv|QNG@pvg=oHx>uw6e~kHJ;;=eZdB zrdu-<_Hk#xqf||9&uHWmgN8h(3XF}pfJW-cV%4c)RV6t&CjGuBxy;Y*2eAiDMIGyd zLb*LQz41oAM{k&LCJ3X6z7gYSctv45qC*9o@in{;s~c%RIc)e9XRMxct>QVx!5PBp z;hB>S6=^abn;Z8Fdmxv^tH_r0SL1RsVdp(pXb-HMz$~#)w_0gY@t))Gt--1hRNP~r z7sYD^r==8HPOv5rP@Dms_aE(d|E3Gg)mWAm7pqt3^%kjAc7>5X?N<)-U9SHveOxVf zd@#ME{v0DQ;h%D91VQ-*%nIRl_^NvIh0DX#v>75fda-SbN?zh))W0-q< zRU65`g!6_B@uQ^3bhKawjYg;2^Br>0(EY`xhV*ppiGpt^c=XQ=^+22P=P(jfNi8Z`Q>a<=Xz81BB@tXuEX zu_ssA?^3Q?94Ra-3*27q5OG>*0V!R3dwUwClA^pkf&OHGKUw0Def|B`C4!P%(h-5m zc^P?mc_n#OdG&d%d0lw}d82vLd5aEy(t;M+=Gfp39{M-n4Fw_;G1fUHP4^3+b-TE@ zxVE`#luosJ*|!2{rOuX!rT<>F{S!|kj>B^Cxo{!&zfVg%UxX%E7>GIGLv{mxA{QQ* z&Y#Embp1KE4qH2KVPw=ApIu+?GMKsH>{BCwV+i!+Ktv6+jCX z8M_(K&ybb*B@-A?z$>$j-X#FPB|H|T7PJv=INKbgVPI%E;5Zo0t#iOkBt`|zQF<^x>;{Rc*1euAaooaV4I z(8HX;zy6ijQzwyXwV4Vqu<++63J|aJtk!KUZl`diak2ug3>zC;baXU};Sdqfa*wW# zAug)v4314|xm;gQBuTxF7VUl*Y$vyDe99kwGCNLPy67LCzifG$t9hE5d)z~S>(Q|_ z1c^5triA%w*t>{CeECvTQ`BDf!C7!zU%;lS1t@SGueATSIg96+60wf(nupDN{^qUn zWp@M{>RVJtzSCda@GUET=q)Qx9?MtFyxUjJCr|fViAVP`o@Y%@=lqW+PflB|&s%Om z;ZN)V6F$g$77@E>V9bf;{lhUpPD6Ukz)TM?9s(lA6a})+b&ZWlGDKm-+?USzQEUbS zaR79MykT0+&rNYT9})GuDAZhVJ!*1Xu%9xoS-2GSJQs!5D}VMZD5wkQVNUHG$)6K{ zzy!ljunmwsmXeavqFC+e>+1uuLqmYs0BViTX5?LTbB;`EXb_3oAT5B5D&>@>6 zSDGwmCHlG8==wkr2`t=L`*d|ip zcC}v-P+43C4IbCaePHl||7?IIjOVoH;cCgVpRVRU)zXbz=2krEFsOSyL-3H!(&Mbv z8>Z!|>4^7w*$18fo^dJBjDXE#yeFLe2HvV;9-Zg7RmS5q((`f4^YJvc<-S+OW0W}^ zv44Z~!Okx8IW-{u^P3}RCg#8hj(h|SP#t@q4yknt%v?PRb-QMb;+49xTP~`7{aUHh z8TdT%k-)lBx0TYKPij_swde|@NI$0Rc^;Qsk#z;8{Fazn#&zgh?c~32=fB_NXyMZ9 z!4Mu@>k3I^)P_cbgWfY9%aOYBO$ADs$pCBtgEiss)Zrw{uxz5iZ@l|ae3yYMgXeT} z$Y1+PT}|&iDGC_-$5C8>)l+2;ZFD+W1uo5B0suyQ{6fRNWHV@7?b}-(2@BK#AQ~8m ztOcTa&~E?5d%K<4x}NN~c%!*^L7$Y+hLyCDNp%=;=8Nv0R7MRHv86Z`&etPlemJy} zTyp?9Nnn_0`MY-84>(Q&|KeDuf}$d|Dx(nq5pJ-od>6#R$l;@)^Lk+Y(BvpTNw#8% z9{KU#uK+*VsZof^4UYM51-{5@Pq+(I>!;?pbn@D{t^9%Gvl}qv8WwZ^lq-|kWsfdh z%g}sHmLcvNu{T)^17o!)>g$`gy_1{jv0vUz;d5>+Oc~*Khj7A5xwAbKw`DMG9;JJ!088{gt z&8S-l=d>B=kLe11lm=Dn`Yln%fL^K;r`0wD(#Dlvgie9oz4gBEl$hlUK$!qFB=zw; zm(+P3vm=PbU;u=NNeON9?b|mn*`+%ma8y*(kdP40*YT1Dcb5m;ya&_eFeB`ny3{39 zyL)@#DdVur;Yby$qB$79PAOM_yG}@5zR>b?*W!7WxHult{{DrdUj-7xzF;p|gD;@U z$shJ-DxZg*Y}R`oAMR!r0>^lv$&YnstBg52VInzO_;1!Dec(~+FK0~~tUZo!utV7Y zUjHt2N9F!wS-y%4;zrDRD>+}L4P(@ejtGu`_q8HI0}MQn##Q4Wy7W!;LnHpwI(Xug zHQ(gQk&mSJqo^matV0A|$J*>?RuZc*7TVhONM@@0FHr<>EX~3 zkA?EV)oSr}lVi#4Z16pgz)yEU-x{|Y8^%}91QQ7xAs$a7z+R8)2~X4-8HM;WK-IK4 zWg)P6%NGIOKi}e&Z>HZe)(!aw^*Wn(Vv_Q!jKI*P_5O5utlR)>W z7gYlOf&g`RIN;~;1H)+251eajYGGE$_X0e=UwP7)9S_w=BV~9m#=|`C*JSiE#gmq} zvEj3|GQzW6`c)TC8JgsvR_as5Rn)j=C4j!T%4#N%ne<$W-koD6#Eo9t}NFP@YYL+xK zG|&i|j{l(euVA1~jgNzrRBJ3mk`R8q)#$K*HUkr-ixFuIcnGz68dqG1A*`Kb<-Cnt zivJ@5Zv*crs7d|~jl6_iHW+Zi$kLM7OmUgGOvdxxQ)YI{dPQaZ0sibkecDu$p{rHK z6~7F69!4atlyoW|@ii3X4g1v6<7ExUqEqIAhdhMp>7#KoZ1-WC^O5Tkih)c#GaM|m zpFrkBp%VG8xkl$R0PwwN_D6sV07PzR5%_qhfw1YQHGbWBYfg(rP^!;Kq9~zhGcway{Sxn7`QEYHgk_KZ~x&P+ey~2>}k>6A^lR$ z>rRSp%7EUjRL_*Flvnu7>)n8X_p7K$eM61y@{PLUg7orfz>x3kxE-CmHJQZ_?MMpF zPk>yATu0~bGuIoRJ<$Fp&7o?MuZ|Pv$6~Ko9xp!Xayc^sIM51)EIT{9#dMkW!R+r2 zip*YMERgSN-d2YH;T+xbT1dm>8Yc1|l8E8rV5MJ00v-w(iouzaCAjcAq!N40nptf16T&@F5B!VHRtU!AV zq$&S0#75XP7!M^B-zWQLG(|SAz03CBboaZB(y?Cw6n_F=B!EVN_p-p0#OBk#rV%tEw|PWc zOJF=i4(Xe3teK1s|MPQ1!GNqqWB|#zdLS&G^We^`nZfyKj_`&b^t}ih9x$=_^9f%z zUwo9+(s;{>Y^tWF<^*%;>q85>RjL77n9R#%#psDx&Y(BjVXZU?$U@@y>a=!zD!@CV zX+U|)PK2vmx5o_ibZecd06#;v!lnr~8W-u9$UK z)@=J?g6wj`jKpa4f=IeSm>F0e2~g}j6;4(mX958!0~#>+(k0I~M-B0VJ@IZj!+;&! zT~;*lrfx*8`HOO8#O%?$%iZE%83W-vd)QzPb7hU5l=@haElR35fQcQI zu*Q|HBM|ci@p2p~)vEn~`JMN|Aa_Md*yB!kql8{$4o;vfi?h=3ZDC>IasLk!#&537 z*gLCQ5rMl2YkHt%iwwVhlRRb^DFQQD4^E z&77#=*sfBAR#}B{8qITXgf5`^_0L<84(WP|92Y;d-4iX`BoDqxK-!+ZnTNaMm916T z6&z2@X&PJOiz?!CZ>bAg{QUH(QcQV4vvGiC@c79yp#TkA$4N z;-B!8&xRO@s&lkFi7Kvkoyn3a z`~50YZPr?uTeFZU;Rs*=#z<9t-4p)k<%Z}-h|WMWuXdmLod;wP-b529n9K&FD;$=^ zpDuUJpbEEN;E09SOV*7k4D*Q_POMTw4WcLK+$UR}lw@UC@LPFGGLl1>wXR*U_#^~b z)xu5$?7$Nxundv6v*c{HCgj`~10^ZMbkn^*5NvmoiD_$5t2I8=b@KZ#uZlWybl$UG z-0{vbk2qw^kI0a;TfsM0BG2rHDK*paq%dyBDTX=n651y%iw zW4dkA$9D)fCxu-~DjZgmOsib=5B;AnA5Uz}7y zw3MtxW1QQD=keEnsN)&txX*4$H^xDQaOEVBBuCsT+1TppRUwEIVGBv`a44%^wf11r z=a+litbrk7dP$Kj?=kw~KU2X9Oy38fbU;v7*|kFX+r&e!6-y<9MuCP4LRr1p{GPgQ zaom$Oj=y|=sAl}^>x{gqZ=7zMjk{^6m}NYu=BNw<9%|m_?3}d7ij-*HZhwg)-Wva~ zBq-z8l8F`1-g`2BH>T#Q_!vA4`4Sz(=f`%n&bw2UiU0#0e(Oa_QQJ~#rVN?5*E(-3 zJ(tP5ws~VqqrQNG0wQ`uJ81Hj(PHTR{D!OZ4w-Q3=JO+o%^xs`BzBFc!__?|HT~-< z7cjSU7ebBu`n^j=Ui|*qJ+~Ji^dL$aX<=r_PK1cZ7JvTydBhpl2rkoqB)cZjh!$au zt2h6yKaF0GvRfaBF6xl5b$46k|85sEmsZTd{Q2|e(`U~dNlw*Q=4d8ZaIwC)l0>5P zodaypF@9NfDgfCI~aP|RHX4Ks2$`6%pdAy z2s8NVb7|mh*(Zy|P|skcq56n5pM+$h<}ZX0RfOfGPk$i*teTVA+c8R^yjrnw_xqSJ zi1pr}wQt&k5G=8O_n7MjMTXEi*GVFHWUawA#&py3)pMe1we>G6?L~}CWgj%Jg6Mpz z3p|33FUaNCggiWagkUL2|jvLxGI`M2)CnUGy3wo&5a&(9y5not}|R8vmH4E z!$}*NzId-@6d`aXF3bNTd941jOq_?1sI$qdIA{f3;Ur5J&eAkHDLK~EPO^zxHatWm zUtWOI>`95Ul+9$?A~c(>K<^vAfL7m5clhtx-@j(SIqsF@ll zx50a{z-4Dg)8WY#BYiflI^HnPCOS`Rn$Dg0tbI}<`=nmzO7&sn(PkCvDxSyJjL&in z1MLR#7Lr<<19biF2-3w=2u73I__sn;ZPWMo1WTIFinH;gOXz(r(+Hqf`PS4FaJ@H8 zM?_4tLW<)3YMPr7-Zhw5qD7U`4+)WPV}?DHjMLHgCu2Mod6_>{Hvh6qg`$gA$o;?@ zkgZEqj(e-Dtjs6FGQ#oa^ zA0k+&`W9%oAW*$^LcR=OJ<2Fh*k(@7cyj|wOzqu8U{3?V3PnRFr2MY0fAZZvH{Dmj zI)IDu_dgl~MSEl@2Zjo~sTdN% z#{z#GP+Wg`%Wd-ZKk!UoJv_V2qX12dTB7KhpvGdx4@=iI)Ot7;JEY8l( z+~C?pyWKBZuICOgG-G*qkFuVY`WKqp+BuBP=TP6SKE*~dU)B&dEChNGH~_HI-&G%} zb?2Jm{i52b)0_q{Ue9-2Z2#zc_g0^adsA0;C`&D7EBXOl!At;l%=2>w5@McMrG=t5 z>Y+j>dteAXtYEA@@_FjH{Y6q?Cw_Sq>@JiER=vZ9Ey=%F;3@-m$V+jeKgc73xzZhd zEcRyeT#g?_GxidtbuBUD!eOE;%>(FwI1Z$vG7+>J|_Do(zS!z+JF(H|7 z+hb?Ci(IKn`gdbjyHfK^}6}s0UnNTzrHU6Go1b+m6sn1 z&y(4&uB@jTFxh-a2vPFc7kgsTEv5_B6EbJdV+qqgA1)_vs3@rnmi!=#MdYV7xB`m+ z-ckyg`>HCgsW@IdVuvwfp=f!C1%9(ziHkF96to+%cHt=f*#!LR}jDtgM?xRWjC+)Oho3*YE-Yl2~kswx@EOkD9P+N0;{7Uk{v^wM|KK9PuLF(2n=Ww_Sf!|rgw<&15^m&XG`3CD?jZ6*ss zP<#OU=D!c~m%`XCKG6JB^=vQO^DOjdpDW3OHL2dC4XXb}^2)Wt$Uwe3t|hs|@E7z0 zW#HuT2Kgk1RmTCx%`mP%t6L#nIdC3=w8idb887kHb)sRTeY6f0f-b)i=tP*Jcwtbrx-9XVGB+HsaeuaT)JCA-meH7L9`W& zwHWehb~^YJbN8@B0P1xim?njKgg@u*?rv}IW%-fhtnr1rZvvs;9?Z=JFFIAYfVoeqK1h@AvF*YiUaq=ewPk z2%_BSc92<_znL2FB9Q+TzNjN%*FhZNmXrGqF?2v;Z76jAR6S(LOhZ;^&-DRWu)}0< zMFZzH4YSir4_o>|HJc7!ptoVt7LP%e`wMcSu^o|S$`B91Xj_)L`Y6U~g;_>j10u>$ zOIzD!@KQ(O0j)9{?=1|cfo;3R67|5iHP1@AgC+6e?i4w+7#QQgg@dWon$&&NLS3_E zk!R+y27G-zw)yjof?+T%3&4*Z!GBN@hp1j$SMmY_@L?#3|P;g}Jd(t-& z@W2u+?~m9%z3e%K#_7DO01~RxikaaIUCjUS<^xioeky#tMtfu{g%x*^+>-t}737Ms zZ$>TFe*FA}znodWGa+p?>q^>#6cx!#riZ$x%x?78>bKtNfO+c2Ft63$dwxK}7cZ<5 z+DQ0j1V*mQ=H)6U5Z^x&$S6W(c{vorc5Kh?`x+wR@?OhPl!Tux{4s9Ha@Fdp#f8HI zS5wBO#58;eO#sGu4t-;Zo2@_HDjlQc{2v$_?@STY#J&TsS(F5b=3bA)k!&nf?@fjO z9nVhAK&^`L?LM<94z6M24e4>$cG4R>)PxG^DIN!C_VK zu1+1;x(_pC5NVroo^A5zi{|!lcI0_y_#|$ciTGgn+jFUNh`T6tHazu>M8w)=B7ohD&I#`!H?BZlN(} z%A>$|##+Y)&6Xg!s3X7DP73|v& zKgWOS*)D`_&lwAkT{#<5=r&otFRcDoVv1*XIV0qH313g0JOu)uSu9Mj#$+Rpxc@)@ J|3}XMe*s76rOp5V literal 0 HcmV?d00001 diff --git a/pics/volatile-variable-rule.png b/pics/volatile-variable-rule.png new file mode 100644 index 0000000000000000000000000000000000000000..1747664b016a0dc48b6c1131f8e207f55b008d57 GIT binary patch literal 30720 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 Date: Thu, 29 Mar 2018 14:09:38 +0800 Subject: [PATCH 07/17] auto commit --- notes/Java 并发.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/notes/Java 并发.md b/notes/Java 并发.md index 3067f275..b2bc846b 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -431,8 +431,6 @@ for(int i = 0; i < 5; i++) {

-除了增加高速缓存之外,为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果是一致的,但并不保证程序中各个语句计算的先后顺序与输入代码中的顺序一致,因此,如果存在一个计算任务依赖另外一个计算任务的中间结果,那么其顺序性并不能靠代码的先后顺序来保证。与处理器的乱序执行优化类似,Java 虚拟机的即时编译器中也有类似的指令重排序(Instruction Reorder)优化。 - ## 内存模型三大特性 ### 1. 原子性 From 4abf99fca475cd50c34fb8a24cb3ddcbe935709f Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 15:33:40 +0800 Subject: [PATCH 08/17] auto commit --- notes/Java 并发.md | 222 +++++++++++++-------------------------------- 1 file changed, 65 insertions(+), 157 deletions(-) diff --git a/notes/Java 并发.md b/notes/Java 并发.md index b2bc846b..f3036ed4 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -23,15 +23,10 @@ * [内存模型三大特性](#内存模型三大特性) * [先行发生原则](#先行发生原则) * [八、线程安全](#八线程安全) - * [1. Java 语言中的线程安全](#1-java-语言中的线程安全) - * [2. 线程安全的实现方法](#2-线程安全的实现方法) -* [九、锁优化](#九锁优化) - * [1. 自旋锁与自适应自旋](#1-自旋锁与自适应自旋) - * [2. 锁消除](#2-锁消除) - * [3. 锁粗化](#3-锁粗化) - * [4. 轻量级锁](#4-轻量级锁) - * [5. 偏向锁](#5-偏向锁) -* [十、多线程开发良好的实践](#十多线程开发良好的实践) + * [线程安全分类](#线程安全分类) + * [线程安全的实现方法](#线程安全的实现方法) + * [锁优化](#锁优化) +* [九、多线程开发良好的实践](#九多线程开发良好的实践) * [参考资料](#参考资料) @@ -214,7 +209,7 @@ interrupted() 方法在检查完中断状态之后会清除中断状态,这样 而同步又可以保证互斥。即进程按一定顺序执行,可以保证在同一时刻只有一个进程能访问临界资源。但是同步不止用来实现互斥,例如生成者消费者问题,生产者和消费者进程之间的同步不是用来控制对临界资源的访问。 -总结起来就是:通信 --> 同步 --> 互斥。 +总结起来就是:通信 -> 同步 -> 互斥。 进程和线程在一定程度上类似,也可以用这些概念来描述。 @@ -251,9 +246,9 @@ public void func(String name) { } ``` -### 2. Lock +### 2. ReentrantLock -实现更细粒度的控制。 +可以使用 Lock 来对一个语句块进行同步。 ```java private Lock lock; @@ -267,6 +262,22 @@ public int func(int value) { } ``` +ReentrantLock 是 java.util.concurrent(J.U.C)包中的锁,相比于 synchronized,它多了一些高级功能: + +**等待可中断** + +当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,改为处理其他事情,可中断特性对处理执行时间非常长的同步块很有帮助。 + +**可实现公平锁** + +公平锁是指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁;而非公平锁则不保证这一点,在锁被释放时,任何一个等待锁的线程都有机会获得锁。synchronized 中的锁是非公平的,ReentrantLock 默认情况下也是非公平的,但可以通过带布尔值的构造函数要求使用公平锁。 + +**锁绑定多个条件** + +一个 ReentrantLock 对象可以同时绑定多个 Condition 对象,而在 synchronized 中,锁对象的 wait() 和 notify() 或 notifyAll() 方法可以实现一个隐含的条件,如果要和多于一个的条件关联的时候,就不得不额外地添加一个锁,而 ReentrantLock 则无须这样做,只需要多次调用 newCondition() 方法即可。 + +如果需要使用上述功能,选用 ReentrantLock 是一个很好的选择。从性能上来看,在新版本的 JDK 中对 synchronized 进行了很多优化,例如自旋锁等。目前来看它和 ReentrantLock 的性能基本持平了,因此性能因素不再是选择 ReentrantLock 的理由,而且 synchronized 有更大的优化空间,因此优先考虑 synchronized。 + ## 线程通信 ### 1. wait() notify() notifyAll() @@ -427,7 +438,7 @@ for(int i = 0; i < 5; i++) { 对处理器上的寄存器进行读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。 -所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存中,保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的操作是对其工作内存中的变量进行操作来完成的。 +所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存中,保存了被该线程使用到的变量的主内存副本拷贝,线程只能直接操作工作内存中的变量。

@@ -537,31 +548,26 @@ join() 方法返回先行发生于 Thread 对象的结束。 # 八、线程安全 -《Java Concurrency In Practice》的作者 Brian Goetz 对“线程安全”有一个比较恰当的定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的”。 +> 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。---- Java Concurrency In Practice -这个定义比较严谨,它要求线程安全的代码都必须具备一个特征:代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无须关心多线程的问题,更无须自己采取任何措施来保证多线程的正确调用。这点听起来简单,但其实并不容易做到,在大多数场景中,我们都会将这个定义弱化一些,如果把“调用这个对象的行为”限定为“单次调用”,这个定义的其他描述也能够成立的话,我们就可以称它是线程安全了,为什么要弱化这个定义,现在暂且放下,稍后再详细探讨。 +## 线程安全分类 -## 1. Java 语言中的线程安全 +### 1. 不可变 -我们这里讨论的线程安全,就限定于多个线程之间存在共享数据访问这个前提,因为如果一段代码根本不会与其他线程共享数据,那么从线程安全的角度来看,程序是串行执行还是多线程执行对它来说是完全没有区别的。 +不可变(Immutable)的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再采取任何的线程安全保障措施,只要一个不可变的对象被正确地构建出来,那其外部的可见状态永远也不会改变,永远也不会看到它在多个线程之中处于不一致的状态。 -为了更加深入地理解线程安全,在这里我们可以不把线程安全当做一个非真即假的二元排他选项来看待,按照线程安全的“安全程度”由强至弱来排序,我们可以将 Java 语言中各种操作共享的数据分为以下 5 类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 +不可变的类: -### 1.1 不可变 +- String +- Number 部分子类,如 Long 和 Double 等数值包装类型,BigInteger 和 BigDecimal 等大数据类型。但同为 Number 的子类型的原子类 AtomicInteger 和 AtomicLong 则并非不可变的。 -在 Java 语言中(特指 JDK 1.5 以后,即 Java 内存模型被修正之后的 Java 语言),不可变(Immutable)的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再采取任何的线程安全保障措施,只要一个不可变的对象被正确地构建出来(没有发生 this 引用逃逸的情况),那其外部的可见状态永远也不会改变,永远也不会看到它在多个线程之中处于不一致的状态。“不可变”带来的安全性是最简单和最纯粹的。 +可以使用 final 关键字修饰一个基本数据类型的共享数据,使它具有不可变性。 -Java 语言中,如果共享数据是一个基本数据类型,那么只要在定义时使用 final 关键字修饰它就可以保证它是不可变的。如果共享数据是一个对象,那就需要保证对象的行为不会对其状态产生任何影响才行,不妨想一想 java.lang.String 类的对象,它是一个典型的不可变对象,我们调用它的 substring()、replace() 和 concat() 这些方法都不会影响它原来的值,只会返回一个新构造的字符串对象。 +### 2. 绝对线程安全 -保证对象行为不影响自己状态的途径有很多种,其中最简单的就是把对象中带有状态的变量都声明为 final,这样在构造函数结束之后,它就是不可变的。 +在 Java API 中标注自己是线程安全的类,大多数都不是绝对的线程安全。例如Vector 是一个线程安全的容器,它的方法被 synchronized 被修饰同步。即使是这样,也不意味着调用它的时候永远都不再需要同步手段了。 -在 Java API 中符合不可变要求的类型,除了上面提到的 String 之外,常用的还有枚举类型,以及 java.lang.Number 的部分子类,如 Long 和 Double 等数值包装类型,BigInteger 和 BigDecimal 等大数据类型;但同为 Number 的子类型的原子类 AtomicInteger 和 AtomicLong 则并非不可变的。 - -### 1.2 绝对线程安全 - -绝对的线程安全完全满足 Brian Goetz 给出的线程安全的定义,这个定义其实是很严格的,一个类要达到“不管运行时环境如何,调用者都不需要任何额外的同步措施”通常需要付出很大的,甚至有时候是不切实际的代价。在 Java API 中标注自己是线程安全的类,大多数都不是绝对的线程安全。我们可以通过 Java API 中一个不是“绝对线程安全”的线程安全类来看看这里的“绝对”是什么意思。 - -如果说 java.util.Vector 是一个线程安全的容器,相信所有的 Java 程序员对此都不会有异议,因为它的 add()、get() 和 size() 这类方法都是被 synchronized 修饰的,尽管这样效率很低,但确实是安全的。但是,即使它所有的方法都被修饰成同步,也不意味着调用它的时候永远都不再需要同步手段了。 +对于下面的代码,在多线程的环境中,如果不在方法调用端做额外的同步措施的话,使用这段代码仍然是不安全的。因为如果另一个线程恰好在错误的时间里删除了一个元素,导致序号 i 已经不再可用的话,再用 i 访问数组就会抛出一个 ArrayIndexOutOfBoundsException。 ```java private static Vector vector = new Vector(); @@ -593,7 +599,6 @@ public static void main(String[] args) { removeThread.start(); printThread.start(); - // 不要同时产生过多的线程,否则会导致操作系统假死 while (Thread.activeCount() > 20); } } @@ -607,7 +612,7 @@ at org.fenixsoft.mulithread.VectorTest$1.run(VectorTest.java:21) at java.lang.Thread.run(Thread.java:662) ``` -很明显,尽管这里使用到的 Vector 的 get()、remove() 和 size() 方法都是同步的,但是在多线程的环境中,如果不在方法调用端做额外的同步措施的话,使用这段代码仍然是不安全的,因为如果另一个线程恰好在错误的时间里删除了一个元素,导致序号 i 已经不再可用的话,再用 i 访问数组就会抛出一个 ArrayIndexOutOfBoundsException。如果要保证这段代码能正确执行下去,我们不得不把 removeThread 和 printThread 的定义改成如下所示的样子: +如果要保证上面的代码能正确执行下去,就需要对 removeThread 和 printThread 中的方法进行同步。 ```java Thread removeThread = new Thread(new Runnable() { @@ -633,162 +638,65 @@ Thread printThread = new Thread(new Runnable() { }); ``` -### 1.3 相对线程安全 +### 3. 相对线程安全 -相对的线程安全就是我们通常意义上所讲的线程安全,它需要保证对这个对象单独的操作是线程安全的,我们在调用的时候不需要做额外的保障措施,但是对于一些特定顺序的连续调用,就可能需要在调用端使用额外的同步手段来保证调用的正确性。 +相对的线程安全需要保证对这个对象单独的操作是线程安全的,我们在调用的时候不需要做额外的保障措施,但是对于一些特定顺序的连续调用,就可能需要在调用端使用额外的同步手段来保证调用的正确性。 在 Java 语言中,大部分的线程安全类都属于这种类型,例如 Vector、HashTable、Collections 的 synchronizedCollection() 方法包装的集合等。 -### 1.4 线程兼容 +### 4. 线程兼容 线程兼容是指对象本身并不是线程安全的,但是可以通过在调用端正确地使用同步手段来保证对象在并发环境中可以安全地使用,我们平常说一个类不是线程安全的,绝大多数时候指的是这一种情况。Java API 中大部分的类都是属于线程兼容的,如与前面的 Vector 和 HashTable 相对应的集合类 ArrayList 和 HashMap 等。 -### 1.5 线程对立 +### 5. 线程对立 线程对立是指无论调用端是否采取了同步措施,都无法在多线程环境中并发使用的代码。由于 Java 语言天生就具备多线程特性,线程对立这种排斥多线程的代码是很少出现的,而且通常都是有害的,应当尽量避免。 -一个线程对立的例子是 Thread 类的 suspend() 和 resume() 方法,如果有两个线程同时持有一个线程对象,一个尝试去中断线程,另一个尝试去恢复线程,如果并发进行的话,无论调用时是否进行了同步,目标线程都是存在死锁风险的,如果 suspend() 中断的线程就是即将要执行 resume() 的那个线程,那就肯定要产生死锁了。也正是由于这个原因,suspend() 和 resume() 方法已经被 JDK 声明废弃(@Deprecated)了。常见的线程对立的操作还有 System.setIn()、Sytem.setOut() 和 System.runFinalizersOnExit() 等。 +## 线程安全的实现方法 -## 2. 线程安全的实现方法 +如何实现线程安全与代码编写有很大的关系,但虚拟机提供的同步和锁机制也起到了非常重要的作用。 -如何实现线程安全与代码编写有很大的关系,但虚拟机提供的同步和锁机制也起到了非常重要的作用。本节中,代码编写如何实现线程安全和虚拟机如何实现同步与锁这两者都会有所涉及,相对而言更偏重后者一些,只要读者了解了虚拟机线程安全手段的运作过程,自己去思考代码如何编写并不是一件困难的事情。 +### 1. 互斥同步 -### 2.1 互斥同步 +synchronized 和 ReentrantLock。 -互斥同步(Mutual Exclusion&Synchronization)是常见的一种并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section)、互斥量(Mutex)和信号量(Semaphore)都是主要的互斥实现方式。因此,在这 4 个字里面,互斥是因,同步是果;互斥是方法,同步是目的。 +### 2. 非阻塞同步 -在 Java 中,最基本的互斥同步手段就是 synchronized 关键字,synchronized 关键字经过编译之后,会在同步块的前后分别形成 monitorenter 和 monitorexit 这两个字节码指令,这两个字节码都需要一个 reference 类型的参数来指明要锁定和解锁的对象。如果 Java 程序中的 synchronized 明确指定了对象参数,那就是这个对象的 reference;如果没有明确指定,那就根据 synchronized 修饰的是实例方法还是类方法,去取对应的对象实例或 Class 对象来作为锁对象。 +互斥同步最主要的问题就是进行线程阻塞和唤醒所带来的性能问题,因此这种同步也称为阻塞同步(Blocking Synchronization)。 -根据虚拟机规范的要求,在执行 monitorenter 指令时,首先要尝试获取对象的锁。如果这个对象没被锁定,或者当前线程已经拥有了那个对象的锁,把锁的计数器加 1,相应的,在执行 monitorexit 指令时会将锁计数器减 1,当计数器为 0 时,锁就被释放。如果获取对象锁失败,那当前线程就要阻塞等待,直到对象锁被另外一个线程释放为止。 +从处理问题的方式上说,互斥同步属于一种悲观的并发策略,总是认为只要不去做正确的同步措施(例如加锁),那就肯定会出现问题,无论共享数据是否真的会出现竞争,它都要进行加锁(这里讨论的是概念模型,实际上虚拟机会优化掉很大一部分不必要的加锁)、用户态核心态转换、维护锁计数器和检查是否有被阻塞的线程需要唤醒等操作。随着硬件指令集的发展,我们有了另外一个选择:基于冲突检测的乐观并发策略,通俗地说,就是先进行操作,如果没有其他线程争用共享数据,那操作就成功了;如果共享数据有争用,产生了冲突,那就再采取其他的补偿措施(最常见的补偿措施就是不断地重试,直到成功为止),这种乐观的并发策略的许多实现都不需要把线程挂起,因此这种同步操作称为非阻塞同步(Non-Blocking Synchronization)。 -在虚拟机规范对 monitorenter 和 monitorexit 的行为描述中,有两点是需要特别注意的。首先,synchronized 同步块对同一条线程来说是可重入的,不会出现自己把自己锁死的问题。其次,同步块在已进入的线程执行完之前,会阻塞后面其他线程的进入。Java 的线程是映射到操作系统的原生线程之上的,如果要阻塞或唤醒一个线程,都需要操作系统来帮忙完成,这就需要从用户态转换到核心态中,因此状态转换需要耗费很多的处理器时间。对于代码简单的同步块(如被 synchronized 修饰的 getter() 或 setter() 方法),状态转换消耗的时间有可能比用户代码执行的时间还要长。所以 synchronized 是 Java 语言中一个重量级(Heavyweight)的操作,有经验的程序员都会在确实必要的情况下才使用这种操作。而虚拟机本身也会进行一些优化,譬如在通知操作系统阻塞线程之前加入一段自旋等待过程,避免频繁地切入到核心态之中。 +乐观锁需要操作和冲突检测这两个步骤具备原子性,这里就不能再使用互斥同步来保证了,只能靠硬件来完成。硬件支持的原子性操作最典型的是:比较并交换(Compare-and-Swap,CAS)。 -除了 synchronized 之外,我们还可以使用 java.util.concurrent(下文称 J.U.C)包中的重入锁(ReentrantLock)来实现同步,在基本用法上,ReentrantLock 与 synchronized 很相似,他们都具备一样的线程重入特性,只是代码写法上有点区别,一个表现为 API 层面的互斥锁(lock() 和 unlock() 方法配合 try/finally 语句块来完成),另一个表现为原生语法层面的互斥锁。不过,相比 synchronized,ReentrantLock 增加了一些高级功能,主要有以下 3 项:等待可中断、可实现公平锁,以及锁可以绑定多个条件。 +CAS 指令需要有 3 个操作数,分别是内存位置(在 Java 中可以简单理解为变量的内存地址,用 V 表示)、旧的预期值(用 A 表示)和新值(用 B 表示)。CAS 指令执行时,当且仅当 V 符合旧预期值 A 时,处理器用新值 B 更新 V 的值,否则它就不执行更新。但是无论是否更新了 V 的值,都会返回 V 的旧值,上述的处理过程是一个原子操作。 -- 等待可中断是指当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,改为处理其他事情,可中断特性对处理执行时间非常长的同步块很有帮助。 +J.U.C 包里面的整数原子类 AtomicInteger,其中的 compareAndSet() 和 getAndIncrement() 等方法都使用了 Unsafe 类的 CAS 操作。 -- 公平锁是指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁;而非公平锁则不保证这一点,在锁被释放时,任何一个等待锁的线程都有机会获得锁。synchronized 中的锁是非公平的,ReentrantLock 默认情况下也是非公平的,但可以通过带布尔值的构造函数要求使用公平锁。 +ABA :如果一个变量 V 初次读取的时候是 A 值,它的值被改成了 B,后来又被改回为 A,那 CAS 操作就会误认为它从来没有被改变过。大部分情况下 ABA 问题不会影响程序并发的正确性,如果需要解决 ABA 问题,改用传统的互斥同步可能会比原子类更高效。 -- 锁绑定多个条件是指一个 ReentrantLock 对象可以同时绑定多个 Condition 对象,而在 synchronized 中,锁对象的 wait() 和 notify() 或 notifyAll() 方法可以实现一个隐含的条件,如果要和多于一个的条件关联的时候,就不得不额外地添加一个锁,而 ReentrantLock 则无须这样做,只需要多次调用 newCondition() 方法即可。 +### 3. 无同步方案 -如果需要使用上述功能,选用 ReentrantLock 是一个很好的选择,那如果是基于性能考虑呢?关于 synchronized 和 ReentrantLock 的性能问题,Brian Goetz 对这两种锁在 JDK 1.5 与单核处理器,以及 JDK 1.5 与双 Xeon 处理器环境下做了一组吞吐量对比的实验,实验结果如图 13-1 和图 13-2 所示。 +要保证线程安全,并不是一定就要进行同步,两者没有因果关系。同步只是保证共享数据争用时的正确性的手段,如果一个方法本来就不涉及共享数据,那它自然就无须任何同步措施去保证正确性,因此会有一些代码天生就是线程安全的。 -

-
JDK 1.5、单核处理器下两种锁的吞吐量对比

+**可重入代码(Reentrant Code)* -

-
JDK 1.5、双 Xeon 处理器下两种锁的吞吐量对比

- -多线程环境下 synchronized 的吞吐量下降得非常严重,而 ReentrantLock 则能基本保持在同一个比较稳定的水平上。与其说 ReentrantLock 性能好,还不如说 synchronized 还有非常大的优化余地。后续的技术发展也证明了这一点,JDK 1.6 中加入了很多针对锁的优化措施,JDK 1.6 发布之后,人们就发现 synchronized 与 ReentrantLock 的性能基本上是完全持平了。因此,如果读者的程序是使用 JDK 1.6 或以上部署的话,性能因素就不再是选择 ReentrantLock 的理由了,虚拟机在未来的性能改进中肯定也会更加偏向于原生的 synchronized,所以还是提倡在 synchronized 能实现需求的情况下,优先考虑使用 synchronized 来进行同步。 - -### 2.2 非阻塞同步 - -互斥同步最主要的问题就是进行线程阻塞和唤醒所带来的性能问题,因此这种同步也称为阻塞同步(Blocking Synchronization)。从处理问题的方式上说,互斥同步属于一种悲观的并发策略,总是认为只要不去做正确的同步措施(例如加锁),那就肯定会出现问题,无论共享数据是否真的会出现竞争,它都要进行加锁(这里讨论的是概念模型,实际上虚拟机会优化掉很大一部分不必要的加锁)、用户态核心态转换、维护锁计数器和检查是否有被阻塞的线程需要唤醒等操作。随着硬件指令集的发展,我们有了另外一个选择:基于冲突检测的乐观并发策略,通俗地说,就是先进行操作,如果没有其他线程争用共享数据,那操作就成功了;如果共享数据有争用,产生了冲突,那就再采取其他的补偿措施(最常见的补偿措施就是不断地重试,直到成功为止),这种乐观的并发策略的许多实现都不需要把线程挂起,因此这种同步操作称为非阻塞同步(Non-Blocking Synchronization)。 - -为什么笔者说使用乐观并发策略需要“硬件指令集的发展”才能进行呢?因为我们需要操作和冲突检测这两个步骤具备原子性,靠什么来保证呢?如果这里再使用互斥同步来保证就失去意义了,所以我们只能靠硬件来完成这件事情,硬件保证一个从语义上看起来需要多次操作的行为只通过一条处理器指令就能完成,这类指令常用的有: - -- 测试并设置(Test-and-Set) -- 获取并增加(Fetch-and-Increment) -- 交换(Swap) -- 比较并交换(Compare-and-Swap,下文称 CAS) -- 加载链接/条件存储(Load-Linked/Store-Conditional,下文称 LL/SC) - -其中,前面的 3 条是 20 世纪就已经存在于大多数指令集之中的处理器指令,后面的两条是现代处理器新增的,而且这两条指令的目的和功能是类似的。在 IA64、x86 指令集中有 cmpxchg 指令完成 CAS 功能,在 sparc-TSO 也有 casa 指令实现,而在 ARM 和 PowerPC 架构下,则需要使用一对 ldrex/strex 指令来完成 LL/SC 的功能。 - -**CAS** 指令需要有 3 个操作数,分别是内存位置(在 Java 中可以简单理解为变量的内存地址,用 V 表示)、旧的预期值(用 A 表示)和新值(用 B 表示)。CAS 指令执行时,当且仅当 V 符合旧预期值 A 时,处理器用新值 B 更新 V 的值,否则它就不执行更新,但是无论是否更新了 V 的值,都会返回 V 的旧值,上述的处理过程是一个原子操作。 - -在 JDK 1.5 之后,Java 程序中才可以使用 CAS 操作,该操作由 sun.misc.Unsafe 类里面的 compareAndSwapInt() 和 compareAndSwapLong() 等几个方法包装提供,虚拟机在内部对这些方法做了特殊处理,即时编译出来的结果就是一条平台相关的处理器 CAS 指令,没有方法调用的过程,或者可以认为是无条件内联进去了。 - -由于 Unsafe 类不是提供给用户程序调用的类(Unsafe.getUnsafe() 的代码中限制了只有启动类加载器(Bootstrap ClassLoader)加载的 Class 才能访问它),因此,如果不采用反射手段,我们只能通过其他的 Java API 来间接使用它,如 J.U.C 包里面的整数原子类,其中的 compareAndSet() 和 getAndIncrement() 等方法都使用了 Unsafe 类的 CAS 操作。 - -这段 20 个线程自增 10000 次的代码使用了 AtomicInteger 之后程序输出了正确结果,一切都要归功于 incrementAndGet() 方法的原子性。 - -代码清单 4:Atomic 的原子自增运算 - -```java -/** - * Atomic 变量自增运算测试 - * - * @author zzm -*/ -public class AtomicTest { - - public static AtomicInteger race = new AtomicInteger(0); - - public static void increase() { - race.incrementAndGet(); - } - - private static final int THREADS_COUNT = 20; - - public static void main(String[] args) throws Exception { - Thread[] threads = new Thread[THREADS_COUNT]; - for (int i = 0; i < THREADS_COUNT; i++) { - threads[i] = new Thread(new Runnable() { - @Override - public void run() { - for (int i = 0; i < 10000; i++) { - increase(); - } - } - }); - threads[i].start(); - } - - while (Thread.activeCount() > 1) - Thread.yield(); - - System.out.println(race); - } -} -``` - -``` -200000 -``` - -incrementAndGet() 的实现其实非常简单。 - -代码清单 5:incrementAndGet() 方法的 JDK 源码 - -```java -/** - * Atomically increment by one the current value. - * @return the updated value - */ -public final int incrementAndGet() { - for (;;) { - int current = get(); - int next = current + 1; - if (compareAndSet(current, next)) - return next; - } -} -``` - -incrementAndGet() 方法在一个无限循环中,不断尝试将一个比当前值大 1 的新值赋给自己。如果失败了,那说明在执行“获取-设置”操作的时候值已经有了修改,于是再次循环进行下一次操作,直到设置成功为止。 - -尽管 CAS 看起来很美,但显然这种操作无法涵盖互斥同步的所有使用场景,并且 CAS 从语义上来说并不是完美的,存在这样的一个逻辑漏洞:如果一个变量 V 初次读取的时候是 A 值,并且在准备赋值的时候检查到它仍然为 A 值,那我们就能说它的值没有被其他线程改变过了吗?如果在这段期间它的值曾经被改成了 B,后来又被改回为 A,那 CAS 操作就会误认为它从来没有被改变过。这个漏洞称为 CAS 操作的“ABA”问题。J.U.C 包为了解决这个问题,提供了一个带有标记的原子引用类“AtomicStampedReference”,它可以通过控制变量值的版本来保证 CAS 的正确性。不过目前来说这个类比较“鸡肋”,大部分情况下 ABA 问题不会影响程序并发的正确性,如果需要解决 ABA 问题,改用传统的互斥同步可能会比原子类更高效。 - -### 2.3 无同步方案 - -要保证线程安全,并不是一定就要进行同步,两者没有因果关系。同步只是保证共享数据争用时的正确性的手段,如果一个方法本来就不涉及共享数据,那它自然就无须任何同步措施去保证正确性,因此会有一些代码天生就是线程安全的,笔者简单地介绍其中的两类。 - -**可重入代码** (Reentrant Code):这种代码也叫做纯代码(Pure Code),可以在代码执行的任何时刻中断它,转而去执行另外一段代码(包括递归调用它本身),而在控制权返回后,原来的程序不会出现任何错误。相对线程安全来说,可重入性是更基本的特性,它可以保证线程安全,即所有的可重入的代码都是线程安全的,但是并非所有的线程安全的代码都是可重入的。 +这种代码也叫做纯代码(Pure Code),可以在代码执行的任何时刻中断它,转而去执行另外一段代码(包括递归调用它本身),而在控制权返回后,原来的程序不会出现任何错误。相对线程安全来说,可重入性是更基本的特性,它可以保证线程安全,即所有的可重入的代码都是线程安全的,但是并非所有的线程安全的代码都是可重入的。 可重入代码有一些共同的特征,例如不依赖存储在堆上的数据和公用的系统资源、用到的状态量都由参数中传入、不调用非可重入的方法等。我们可以通过一个简单的原则来判断代码是否具备可重入性:如果一个方法,它的返回结果是可以预测的,只要输入了相同的数据,就都能返回相同的结果,那它就满足可重入性的要求,当然也就是线程安全的。 -**线程本地存储** (Thread Local Storage):如果一段代码中所需要的数据必须与其他代码共享,那就看看这些共享数据的代码是否能保证在同一个线程中执行。如果能保证,我们就可以把共享数据的可见范围限制在同一个线程之内,这样,无须同步也能保证线程之间不出现数据争用的问题。 +**线程本地存储(Thread Local Storage)** + +如果一段代码中所需要的数据必须与其他代码共享,那就看看这些共享数据的代码是否能保证在同一个线程中执行。如果能保证,我们就可以把共享数据的可见范围限制在同一个线程之内,这样,无须同步也能保证线程之间不出现数据争用的问题。 符合这种特点的应用并不少见,大部分使用消费队列的架构模式(如“生产者-消费者”模式)都会将产品的消费过程尽量在一个线程中消费完,其中最重要的一个应用实例就是经典 Web 交互模型中的“一个请求对应一个服务器线程”(Thread-per-Request)的处理方式,这种处理方式的广泛应用使得很多 Web 服务端应用都可以使用线程本地存储来解决线程安全问题。 Java 语言中,如果一个变量要被多线程访问,可以使用 volatile 关键字声明它为“易变的”;如果一个变量要被某个线程独享,Java 中就没有类似 C++中 \_\_declspec(thread)这样的关键字,不过还是可以通过 java.lang.ThreadLocal 类来实现线程本地存储的功能。每一个线程的 Thread 对象中都有一个 ThreadLocalMap 对象,这个对象存储了一组以 ThreadLocal.threadLocalHashCode 为键,以本地线程变量为值的 K-V 值对,ThreadLocal 对象就是当前线程的 ThreadLocalMap 的访问入口,每一个 ThreadLocal 对象都包含了一个独一无二的 threadLocalHashCode 值,使用这个值就可以在线程 K-V 值对中找回对应的本地线程变量。 -# 九、锁优化 +## 锁优化 高效并发是从 JDK 1.5 到 JDK 1.6 的一个重要改进,HotSpot 虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等。这些技术都是为了在线程之间更高效地共享数据,以及解决竞争问题,从而提高程序的执行效率。 -## 1. 自旋锁与自适应自旋 +### 1. 自旋锁与自适应自旋 前面我们讨论互斥同步的时候,提到了互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态完成,这些操作给系统的并发性能带来了很大的压力。同时,虚拟机的开发团队也注意到在许多应用上,共享数据的锁定状态只会持续很短的一段时间,为了这段时间去挂起和恢复线程并不值得。如果物理机器有一个以上的处理器,能让两个或以上的线程同时并行执行,我们就可以让后面请求锁的那个线程 “稍等一下”,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁。为了让线程等待,我们只需让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。 @@ -796,7 +704,7 @@ Java 语言中,如果一个变量要被多线程访问,可以使用 volatile 在 JDK 1.6 中引入了自适应的自旋锁。自适应意味着自旋的时间不再固定了,而是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。如果在同一个锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行中,那么虚拟机就会认为这次自旋也很有可能再次成功,进而它将允许自旋等待持续相对更长的时间,比如 100 个循环。另外,如果对于某个锁,自旋很少成功获得过,那在以后要获取这个锁时将可能省略掉自旋过程,以避免浪费处理器资源。有了自适应自旋,随着程序运行和性能监控信息的不断完善,虚拟机对程序锁的状况预测就会越来越准确,虚拟机就会变得越来越 “聪明” 了。 -## 2. 锁消除 +### 2. 锁消除 锁消除是指虚拟机即时编译器在运行时,对一些代码上要求同步,但是被检测到不可能存在共享数据竞争的锁进行消除。锁消除的主要判定依据来源于逃逸分析的数据支持,如果判定在一段代码中,堆上的所有数据都不会逃逸出去从而被其他线程访问到,那就可以把他们当做栈上数据对待,认为它们是线程私有的,同步加锁自然就无须进行。 @@ -825,7 +733,7 @@ public static String concatString(String s1, String s2, String s3) { ``` 每个 StringBuffer.append() 方法中都有一个同步块,锁就是 sb 对象。虚拟机观察变量 sb,很快就会发现它的动态作用域被限制在 concatString() 方法内部。也就是说,sb 的所有引用永远不会 “逃逸” 到 concatString() 方法之外,其他线程无法访问到它,因此,虽然这里有锁,但是可以被安全地消除掉,在即时编译之后,这段代码就会忽略掉所有的同步而直接执行了。 -## 3. 锁粗化 +### 3. 锁粗化 原则上,我们在编写代码的时候,总是推荐将同步块的作用范围限制得尽量小:只在共享数据的实际作用域中才进行同步。这样是为了使得需要同步的操作数量尽可能变小,如果存在锁竞争,那等待锁的线程也能尽快拿到锁。 @@ -833,7 +741,7 @@ public static String concatString(String s1, String s2, String s3) { 代码清单 7 中连续的 append() 方法就属于这类情况。如果虚拟机探测到由这样的一串零碎的操作都对同一个对象加锁,将会把加锁同步的范围扩展(粗化)到整个操作序列的外部,以代码清单 7 为例,就是扩展到第一个 append() 操作之前直至最后一个 append() 操作之后,这样只需要加锁一次就可以了。 -## 4. 轻量级锁 +### 4. 轻量级锁 轻量级锁是 JDK 1.6 之中加入的新型锁机制,它名字中的 “轻量级” 是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为 “重量级” 锁。首先需要强调一点的是,轻量级锁并不是用来代替重要级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。 @@ -857,7 +765,7 @@ public static String concatString(String s1, String s2, String s3) { 轻量级锁能提升程序同步性能的依据是“对于绝大部分的锁,在整个同步周期内都是不存在竞争的”,这是一个经验数据。如果没有竞争,轻量级锁使用 CAS 操作避免了使用互斥量的开销,但如果存在锁竞争,除了互斥量的开销外,还额外发生了 CAS 操作,因此在有竞争的情况下,轻量级锁会比传统的重量级锁更慢。 -## 5. 偏向锁 +### 5. 偏向锁 偏向锁也是 JDK 1.6 中引入的一项锁优化,它的目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能。如果说轻量级锁是在无竞争的情况下使用 CAS 操作去消除同步使用的互斥量,那偏向锁就是在无竞争的情况下把整个同步都消除掉,连 CAS 操作都不做了。 @@ -871,7 +779,7 @@ public static String concatString(String s1, String s2, String s3) { 偏向锁可以提高带有同步但无竞争的程序性能。它同样是一个带有效益权衡(Trade Off)性质的优化,也就是说,它并不一定总是对程序运行有利,如果程序中大多数的锁总是被多个不同的线程访问,那偏向模式就是多余的。在具体问题具体分析的前提下,有时候使用参数 -XX:-UseBiasedLocking 来禁止偏向锁优化反而可以提升性能。 -# 十、多线程开发良好的实践 +# 九、多线程开发良好的实践 1. 给线程起个有意义的名字,这样可以方便找 Bug; From ca83cc7bd59f8b0040bceb860a0f526ae71643d1 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 15:35:23 +0800 Subject: [PATCH 09/17] auto commit --- notes/Java 并发.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notes/Java 并发.md b/notes/Java 并发.md index f3036ed4..f87a0dba 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -548,7 +548,7 @@ join() 方法返回先行发生于 Thread 对象的结束。 # 八、线程安全 -> 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。---- Java Concurrency In Practice +当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。 《Java Concurrency In Practice》 ## 线程安全分类 @@ -678,7 +678,7 @@ ABA :如果一个变量 V 初次读取的时候是 A 值,它的值被改成 要保证线程安全,并不是一定就要进行同步,两者没有因果关系。同步只是保证共享数据争用时的正确性的手段,如果一个方法本来就不涉及共享数据,那它自然就无须任何同步措施去保证正确性,因此会有一些代码天生就是线程安全的。 -**可重入代码(Reentrant Code)* +**可重入代码(Reentrant Code)** 这种代码也叫做纯代码(Pure Code),可以在代码执行的任何时刻中断它,转而去执行另外一段代码(包括递归调用它本身),而在控制权返回后,原来的程序不会出现任何错误。相对线程安全来说,可重入性是更基本的特性,它可以保证线程安全,即所有的可重入的代码都是线程安全的,但是并非所有的线程安全的代码都是可重入的。 From 66980ee5d003ed5e9f0026d02094520f53e27b8d Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 16:00:26 +0800 Subject: [PATCH 10/17] auto commit --- notes/Java 并发.md | 31 ++++++------------ pics/390c913b-5f31-444f-bbdb-2b88b688e7ce.jpg | Bin 0 -> 119808 bytes pics/8cc671f0-7134-44b1-a7b5-6d24fe55e1c1.jpg | Bin 0 -> 79872 bytes 3 files changed, 10 insertions(+), 21 deletions(-) create mode 100644 pics/390c913b-5f31-444f-bbdb-2b88b688e7ce.jpg create mode 100644 pics/8cc671f0-7134-44b1-a7b5-6d24fe55e1c1.jpg diff --git a/notes/Java 并发.md b/notes/Java 并发.md index f87a0dba..d02285ef 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -700,9 +700,9 @@ Java 语言中,如果一个变量要被多线程访问,可以使用 volatile 前面我们讨论互斥同步的时候,提到了互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态完成,这些操作给系统的并发性能带来了很大的压力。同时,虚拟机的开发团队也注意到在许多应用上,共享数据的锁定状态只会持续很短的一段时间,为了这段时间去挂起和恢复线程并不值得。如果物理机器有一个以上的处理器,能让两个或以上的线程同时并行执行,我们就可以让后面请求锁的那个线程 “稍等一下”,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁。为了让线程等待,我们只需让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。 -自旋锁在 JDK 1.4.2 中就已经引入,只不过默认是关闭的,可以使用 -XX:+UseSpinning 参数来开启,在 JDK 1.6 就已经改为默认开启了。自旋等待不能代替阻塞,且先不说对处理器数量的要求,自旋等待本身虽然避免了线程切换的开销,但它是要占用处理器时间的,因此,如果锁被占用的时间很短,自旋等待的效果就会非常好。反之,如果锁被占用的时候很长,那么自旋的线程只会白白消耗处理器资源,而不会做任何有用的工作,反而会带来性能上的浪费。因此,自旋等待的时间必须要有一定的限度,如果自旋超过了限定的次数仍然没有成功获得锁,就应当使用传统的方式去挂起线程了。自旋次数的默认值是 10 次,用户可以使用参数 -XX:PreBlockSpin 来更改。 +自旋等待本身虽然避免了线程切换的开销,但它是要占用处理器时间的,因此,如果锁被占用的时间很短,自旋等待的效果就会非常好。反之,如果锁被占用的时候很长,那么自旋的线程只会白白消耗处理器资源,而不会做任何有用的工作,反而会带来性能上的浪费。因此,自旋等待的时间必须要有一定的限度,如果自旋超过了限定的次数仍然没有成功获得锁,就应当使用传统的方式去挂起线程了。自旋次数的默认值是 10 次,用户可以使用参数 -XX:PreBlockSpin 来更改。 -在 JDK 1.6 中引入了自适应的自旋锁。自适应意味着自旋的时间不再固定了,而是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。如果在同一个锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行中,那么虚拟机就会认为这次自旋也很有可能再次成功,进而它将允许自旋等待持续相对更长的时间,比如 100 个循环。另外,如果对于某个锁,自旋很少成功获得过,那在以后要获取这个锁时将可能省略掉自旋过程,以避免浪费处理器资源。有了自适应自旋,随着程序运行和性能监控信息的不断完善,虚拟机对程序锁的状况预测就会越来越准确,虚拟机就会变得越来越 “聪明” 了。 +在 JDK 1.6 中引入了自适应的自旋锁。自适应意味着自旋的时间不再固定了,而是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。如果在同一个锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行中,那么虚拟机就会认为这次自旋也很有可能再次成功,进而它将允许自旋等待持续相对更长的时间,比如 100 个循环。另外,如果对于某个锁,自旋很少成功获得过,那在以后要获取这个锁时将可能省略掉自旋过程,以避免浪费处理器资源。有了自适应自旋,随着程序运行和性能监控信息的不断完善,虚拟机对程序锁的状况预测就会越来越准确,虚拟机就会变得越来越“聪明”了。 ### 2. 锁消除 @@ -710,8 +710,6 @@ Java 语言中,如果一个变量要被多线程访问,可以使用 volatile 也许读者会有疑问,变量是否逃逸,对于虚拟机来说需要使用数据流分析来确定,但是程序自己应该是很清楚的,怎么会在明知道不存在数据争用的情况下要求同步呢?答案是有许多同步措施并不是程序员自己加入的。同步的代码在 Java 程序中的普遍程度也许超过了大部分读者的想象。下面段非常简单的代码仅仅是输出 3 个字符串相加的结果,无论是源码字面上还是程序语义上都没有同步。 -代码清单 6:一段看起来没有同步的代码 - ```java public static String concatString(String s1, String s2, String s3) { return s1 + s2 + s3; @@ -720,8 +718,6 @@ public static String concatString(String s1, String s2, String s3) { 我们也知道,由于 String 是一个不可变的类,对字符串的连接操作总是通过生成新的 String 对象来进行的,因此 Javac 编译器会对 String 连接做自动优化。在 JDK 1.5 之前,会转化为 StringBuffer 对象的连续 append() 操作,在 JDK 1.5 及以后的版本中,会转化为 StringBuilder 对象的连续 append() 操作,即上面的代码可能会变成下面的样子: -代码清单 7:Javac 转化后的字符串连接操作 - ```java public static String concatString(String s1, String s2, String s3) { StringBuffer sb = new StringBuffer(); @@ -731,7 +727,7 @@ public static String concatString(String s1, String s2, String s3) { return sb.toString(); } ``` -每个 StringBuffer.append() 方法中都有一个同步块,锁就是 sb 对象。虚拟机观察变量 sb,很快就会发现它的动态作用域被限制在 concatString() 方法内部。也就是说,sb 的所有引用永远不会 “逃逸” 到 concatString() 方法之外,其他线程无法访问到它,因此,虽然这里有锁,但是可以被安全地消除掉,在即时编译之后,这段代码就会忽略掉所有的同步而直接执行了。 +每个 StringBuffer.append() 方法中都有一个同步块,锁就是 sb 对象。虚拟机观察变量 sb,很快就会发现它的动态作用域被限制在 concatString() 方法内部。也就是说,sb 的所有引用永远不会 “逃逸” 到 concatString() 方法之外,其他线程无法访问到它。因此,虽然这里有锁,但是可以被安全地消除掉,在即时编译之后,这段代码就会忽略掉所有的同步而直接执行了。 ### 3. 锁粗化 @@ -739,25 +735,17 @@ public static String concatString(String s1, String s2, String s3) { 大部分情况下,上面的原则都是正确的,但是如果一系列的连续操作都对同一个对象反复加锁和解锁,甚至加锁操作是出现在循环体中,那即使没有线程竞争,频繁地进行互斥同步操作也会导致不必要的性能损耗。 -代码清单 7 中连续的 append() 方法就属于这类情况。如果虚拟机探测到由这样的一串零碎的操作都对同一个对象加锁,将会把加锁同步的范围扩展(粗化)到整个操作序列的外部,以代码清单 7 为例,就是扩展到第一个 append() 操作之前直至最后一个 append() 操作之后,这样只需要加锁一次就可以了。 +上一节的示例代码中连续的 append() 方法就属于这类情况。如果虚拟机探测到由这样的一串零碎的操作都对同一个对象加锁,将会把加锁同步的范围扩展(粗化)到整个操作序列的外部。对于上一节的示例代码就是扩展到第一个 append() 操作之前直至最后一个 append() 操作之后,这样只需要加锁一次就可以了。 ### 4. 轻量级锁 -轻量级锁是 JDK 1.6 之中加入的新型锁机制,它名字中的 “轻量级” 是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为 “重量级” 锁。首先需要强调一点的是,轻量级锁并不是用来代替重要级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。 +轻量级锁是 JDK 1.6 之中加入的新型锁机制,它名字中的“轻量级”是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为“重量级”锁。首先需要强调一点的是,轻量级锁并不是用来代替重要级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。 要理解轻量级锁,以及后面会讲到的偏向锁的原理和运作过程,必须从 HotSpot 虚拟机的对象(对象头部分)的内存布局开始介绍。HotSpot 虚拟机的对象头(Object Header)分为两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC 分代年龄(Generational GC Age)等,这部分数据是长度在 32 位和 64 位的虚拟机中分别为 32 bit 和 64 bit,官方称它为“Mark Word”,它是实现轻量级锁和偏向锁的关键。另外一部分用于存储指向方法区对象类型数据的指针,如果是数组对象的话,还会有一个额外的部分用于存储数组长度。 -对象头信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,Mark Work 被设计成一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。例如,在 32 位的 HotSpot 虚拟机中对象未被锁定的状态下,Mark Word 的 32bit 空间中的 25bit 用于存储对象哈希码(HashCode),4bit 用于存储对象分代年龄,2bit 用于存储锁标志位,1bit 固定为 0,在其他状态(轻量级锁定、重量级锁定、GC 标记、可偏向)下对象的存储内容见表 13-1。 +简单地介绍了对象的内存布局后,我们把话题返回到轻量级锁的执行过程上。在代码进入同步块的时候,如果此同步对象没有被锁定(锁标志位为 “01” 状态)虚拟机首先将在当前线程的栈帧中建立一个名为锁记录(Lock Record)的空间,用于存储锁对象目前的 Mark Word 的拷贝(官方把这份拷贝加上了一个 Displaced 前缀,即 Displaced Mark Word)。然后,虚拟机将使用 CAS 操作尝试将对象的 Mark Word 更新为指向 Lock Record 的指针。如果这个更新动作成功了,那么这个线程就拥有了该对象的锁,并且对象 Mark Word 的锁标志位(Mark Word 的最后 2bit)将转变为 “00”,即表示此对象处于轻量级锁定状态。 -

- -简单地介绍了对象的内存布局后,我们把话题返回到轻量级锁的执行过程上。在代码进入同步块的时候,如果此同步对象没有被锁定(锁标志位为 “01” 状态)虚拟机首先将在当前线程的栈帧中建立一个名为锁记录(Lock Record)的空间,用于存储锁对象目前的 Mark Word 的拷贝(官方把这份拷贝加上了一个 Displaced 前缀,即 Displaced Mark Word),这时候线程堆栈与对象头的状态如图 13-3 所示。 - -

- -然后,虚拟机将使用 CAS 操作尝试将对象的 Mark Word 更新为指向 Lock Record 的指针。如果这个更新动作成功了,那么这个线程就拥有了该对象的锁,并且对象 Mark Word 的锁标志位(Mark Word 的最后 2bit)将转变为 “00”,即表示此对象处于轻量级锁定状态,这时候线程堆栈与对象头的状态如图 13-4 所示。 - -

+

如果这个更新操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的栈帧,如果是的话只说明当前线程已经拥有了这个对象的锁,那就可以直接进入同步块继续执行,否则说明这个锁对象已经被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁,所标志的状态变为“10”,Mark Word 中存储的就是指向重量级锁(互斥量)的指针,后面等待锁的线程也要进入阻塞状态。 @@ -771,11 +759,11 @@ public static String concatString(String s1, String s2, String s3) { 偏向锁的“偏”,就是偏心的“偏”、偏袒的“偏”,它的意思是这个锁会偏向于第一个获得它的线程,如果在接下来的执行过程中,该锁没有被其他的线程获取,则持有偏向锁的线程将永远不需要再进行同步。 -如果读者读懂了前面轻量级锁中关于对象头 Mark Word 与线程之间的操作过程,那偏向锁的原理理解起来就会很简单。假设当前虚拟机启用了偏向锁(启用参数 -XX:+UseBiasedLocking,这是 JDK 1.6 的默认值),那么,当锁对象第一次被线程获取的时候,虚拟机将会把对象头中的标志位设为“01”,即偏向模式。同时使用 CAS 操作把获取到这个锁的线程 ID 记录在对象的 Mark Word 之中,如果 CAS 操作成功,持有偏向锁的线程以后每次进入这个锁相关的同步块时,虚拟机都可以不再进行如何同步操作(例如 Locking、Unlocking 及对 Mark Word 的 Update 等)。 +假设当前虚拟机启用了偏向锁(启用参数 -XX:+UseBiasedLocking,这是 JDK 1.6 的默认值),那么,当锁对象第一次被线程获取的时候,虚拟机将会把对象头中的标志位设为“01”,即偏向模式。同时使用 CAS 操作把获取到这个锁的线程 ID 记录在对象的 Mark Word 之中,如果 CAS 操作成功,持有偏向锁的线程以后每次进入这个锁相关的同步块时,虚拟机都可以不再进行如何同步操作(例如 Locking、Unlocking 及对 Mark Word 的 Update 等)。 当有另外一个线程去尝试获取这个锁时,偏向模式就宣告结束。根据锁对象目前是否处于被锁定的状态,撤销偏向(Revoke Bias)后恢复到未锁定(标志位为“01”)或轻量级锁定(标志位为“00”)的状态,后续的同步操作就如上面介绍的轻量级锁那样执行。偏向锁、轻量级锁的状态转换及对象 Mark Word 的关系如图 13-5 所示。 -

+

偏向锁可以提高带有同步但无竞争的程序性能。它同样是一个带有效益权衡(Trade Off)性质的优化,也就是说,它并不一定总是对程序运行有利,如果程序中大多数的锁总是被多个不同的线程访问,那偏向模式就是多余的。在具体问题具体分析的前提下,有时候使用参数 -XX:-UseBiasedLocking 来禁止偏向锁优化反而可以提升性能。 @@ -799,3 +787,4 @@ public static String concatString(String s1, String s2, String s3) { - [thread state java](https://stackoverflow.com/questions/11265289/thread-state-java) - [CSC 456 Spring 2012/ch7 MN](http://wiki.expertiza.ncsu.edu/index.php/CSC_456_Spring_2012/ch7_MN) - [Java - Understanding Happens-before relationship](https://www.logicbig.com/tutorials/core-java-tutorial/java-multi-threading/happens-before.html) +- [6장 Thread Synchronization](https://www.slideshare.net/novathinker/6-thread-synchronization) diff --git a/pics/390c913b-5f31-444f-bbdb-2b88b688e7ce.jpg b/pics/390c913b-5f31-444f-bbdb-2b88b688e7ce.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78eb732bf36219f224b35bf668b09cfd52ec591b GIT binary patch literal 119808 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

EuH0sa)1Fe3AR41$lS%dlCHRs$nce->I&wxqc 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℘`T(-KgWmG%M&30p8mJ0zw- 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 literal 0 HcmV?d00001 From 55d6a9aaa5460d8ef663b8d801a4707d6e8a563c Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 16:50:57 +0800 Subject: [PATCH 11/17] auto commit --- notes/算法.md | 47 ++++++++++++++--------------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/notes/算法.md b/notes/算法.md index 3a8a4843..fcbad506 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -1,6 +1,5 @@ * [一、算法分析](#一算法分析) - * [函数转换](#函数转换) * [数学模型](#数学模型) * [ThreeSum](#threesum) * [倍率实验](#倍率实验) @@ -34,31 +33,15 @@ # 一、算法分析 -## 函数转换 - -指数函数可以转换为线性函数,从而在函数图像上显示的更直观。例如 - -


- -可以在其两端同时取对数,得到: - -

- -

- ## 数学模型 ### 1. 近似 -使用 \~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数,例如 N3/6-N2/2+N/3 \~ N3/6。 - -

+N3/6-N2/2+N/3 \~ N3/6。使用 \~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数。 ### 2. 增长数量级 -增长数量级将算法与它的实现隔离开来,一个算法的增长数量级为 N3 与它是否用 Java 实现,是否运行于特定计算机上无关。 - -

+N3/6-N2/2+N/3 的增长数量级为 O(N3)。增长数量级将算法与它的实现隔离开来,一个算法的增长数量级为 O(N3)与它是否用 Java 实现,是否运行于特定计算机上无关。 ### 3. 内循环 @@ -91,7 +74,7 @@ public class ThreeSum { } ``` -该算法的内循环为`if (a[i] + a[j] + a[k] == 0)`语句,总共执行的次数为 N(N-1)(N-2) = N3/6 - N2/2 + N/3,因此它的近似执行次数为 \~N3/6,增长数量级为 N3。 +该算法的内循环为 if (a[i] + a[j] + a[k] == 0) 语句,总共执行的次数为 N(N-1)(N-2) = N3/6 - N2/2 + N/3,因此它的近似执行次数为 \~N3/6,增长数量级为 N3 **改进**
@@ -125,7 +108,14 @@ public class ThreeSumFast { 例如对于暴力方法的 ThreeSum 算法,近似时间为 \~N3/6。进行如下实验:多次运行该算法,每次取的 N 值为前一次的两倍,统计每次执行的时间,并统计本次运行时间与前一次运行时间的比值,得到如下结果: -

+| N | Time | Ratio | +| --- | --- | --- | +| 250 | 0.0 | 2.7 | +| 500 | 0.0 | 4.8 | +| 1000 | 0.1 | 6.9 | +| 2000 | 0.8 | 7.7 | +| 4000 | 6.4 | 8.0 | +| 8000 | 51.1 | 8.0 | 可以看到,T(2N)/T(N) \~ 23,因此可以确定 T(N) \~ aN3logN。 @@ -155,9 +145,7 @@ public class ThreeSumFast { ## 栈 -first-in-last-out(FILO) - -

+> First-In-Last-Out **1. 数组实现**
@@ -220,12 +208,6 @@ public class ResizeArrayStack implements Iterable { } ``` -上面实现使用了泛型,Java 不能直接创建泛型数组,只能使用转型来创建。 - -```java -Item[] arr = (Item[]) new Object[N]; -``` - **2. 链表实现**
需要使用链表的头插法来实现,因为头插法中最后压入栈的元素在链表的开头,它的 next 指针指向前一个压入栈的元素,在弹出元素使就可以通过 next 指针遍历到前一个压入栈的元素从而让这个元素称为新的栈顶元素。 @@ -265,11 +247,10 @@ public class Stack { } } ``` + ## 队列 -first-in-first-out(FIFO) - -

+> First-In-First-Out 下面是队列的链表实现,需要维护 first 和 last 节点指针,分别指向队首和队尾。 From 4e5c1d806d11112475eb6f4dd2cffb5e7e551817 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 19:39:42 +0800 Subject: [PATCH 12/17] auto commit --- notes/计算机网络.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/notes/计算机网络.md b/notes/计算机网络.md index a6728930..ec67eca7 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -622,7 +622,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 3. B 收到连接请求报文段,如果同意建立连接,则向 A 发送连接确认报文段,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。 -4. A 收到 B 的连接确认报文段后,还要向 B 发出确认,确认号为 y+1,序号为 x+1,进入 TIME-WAIT 状态。 +4. A 收到 B 的连接确认报文段后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。 5. B 收到 A 的确认后,连接建立。 @@ -636,9 +636,11 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 2. B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据; -3. 当 B 要不再需要连接时,发送连接释放请求报文段,FIN=1; +3. 当 B 要不再需要连接时,发送连接释放请求报文段,FIN=1 -4. A 收到后发出确认,此时连接释放。 +4. A 收到后发出确认,进入 TIME-WAIT 状态,等待 2MSL 时间后释放连接。 + +5. B 收到 A 的确认后释放连接。 **TIME_WAIT** From dc770ada6c3471e4625060f28cc617b7d08b257a Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 19:40:18 +0800 Subject: [PATCH 13/17] auto commit --- notes/算法.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/notes/算法.md b/notes/算法.md index fcbad506..97c61324 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -499,10 +499,6 @@ public class Insertion { 插入排序对于部分有序数组和小规模数组特别高效。 - **选择排序和插入排序的比较**
- -对于随机排列的无重复主键的数组,插入排序和选择排序的运行时间是平方级别的,两者之比是一个较小的常数。 - ## 希尔排序 对于大规模的数组,插入排序很慢,因为它只能交换相邻的元素,如果要把元素从一端移到另一端,就需要很多次操作。 From e18805217714d1dd8e465550e1f6d5fe75b795cd Mon Sep 17 00:00:00 2001 From: love666666shen Date: Thu, 29 Mar 2018 20:01:09 +0800 Subject: [PATCH 14/17] =?UTF-8?q?Update=20Java=20=E5=AE=B9=E5=99=A8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/Java 容器.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/Java 容器.md b/notes/Java 容器.md index 09b1d0f0..f5f74cd9 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -171,7 +171,7 @@ public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable ``` -基于数组实现,保存元素的数组使用 transient 修饰,该关键字声明数组默认不会被序列化。这是 ArrayList 具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。ArrayList 重写了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充那么部分内容。 +基于数组实现,保存元素的数组使用 transient 修饰,该关键字声明数组默认不会被序列化。这是 ArrayList 具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。ArrayList 重写了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充的那部分内容。 ```java transient Object[] elementData; // non-private to simplify nested class access From bf8c6b08ebf6535ccdabc3774d2d47fb0b6bf5e5 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 21:01:54 +0800 Subject: [PATCH 15/17] auto commit --- notes/Java 容器.md | 2 +- notes/计算机网络.md | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/notes/Java 容器.md b/notes/Java 容器.md index 09b1d0f0..2a05225b 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -171,7 +171,7 @@ public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable ``` -基于数组实现,保存元素的数组使用 transient 修饰,该关键字声明数组默认不会被序列化。这是 ArrayList 具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。ArrayList 重写了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充那么部分内容。 +基于数组实现,保存元素的数组使用 transient 修饰,该关键字声明数组默认不会被序列化。这是 ArrayList 具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。ArrayList 重写了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充那部分内容。 ```java transient Object[] elementData; // non-private to simplify nested class access diff --git a/notes/计算机网络.md b/notes/计算机网络.md index ec67eca7..42add860 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -30,7 +30,6 @@ * [路由选择协议](#路由选择协议) * [网际控制报文协议 ICMP](#网际控制报文协议-icmp) * [分组网间探测 PING](#分组网间探测-ping) - * [IP 多播](#ip-多播) * [虚拟专用网 VPN](#虚拟专用网-vpn) * [网络地址转换 NAT](#网络地址转换-nat) * [五、运输层*](#五运输层) @@ -546,11 +545,6 @@ Ping 的过程: 3. 不断执行这样的步骤,知道最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。 4. 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。 -## IP 多播 - -在一对多的通信中,多播不需要将分组复制多份,从而大大节约网络资源。 - -

## 虚拟专用网 VPN @@ -626,6 +620,12 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 5. B 收到 A 的确认后,连接建立。 +**三次握手的原因** + +为了防止失效的连接请求到达服务器,让服务器错误打开连接。 + +失效的连接请求是指,客户端发送的连接请求在网络中滞留,客户端因为没及时收到服务器端发送的连接确认,因此就重新发送了连接请求。滞留的连接请求并不是丢失,之后还是会到达服务器。如果不进行第三次握手,那么服务器会误认为客户端重新请求连接,然后打开了连接。但是并不是客户端真正打开这个连接,因此客户端不会给服务器发送数据,这个连接就白白浪费了。 + ## TCP 的四次挥手

@@ -642,6 +642,10 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 5. B 收到 A 的确认后释放连接。 +**四次挥手的原因** + +客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。 + **TIME_WAIT** 客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由: From 3ab18f6cf024fb49d98e25e463f980a10f5c52ee Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 21:06:52 +0800 Subject: [PATCH 16/17] auto commit --- notes/Java 容器.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/notes/Java 容器.md b/notes/Java 容器.md index a52b504b..2a05225b 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -171,11 +171,7 @@ public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable ``` -<<<<<<< HEAD 基于数组实现,保存元素的数组使用 transient 修饰,该关键字声明数组默认不会被序列化。这是 ArrayList 具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。ArrayList 重写了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充那部分内容。 -======= -基于数组实现,保存元素的数组使用 transient 修饰,该关键字声明数组默认不会被序列化。这是 ArrayList 具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。ArrayList 重写了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充的那部分内容。 ->>>>>>> 643953f9f9fa478bf713faedc019ff4659e60f14 ```java transient Object[] elementData; // non-private to simplify nested class access From 107fb66a7082e651808621e6e3f22f31927a1acf Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 29 Mar 2018 21:10:33 +0800 Subject: [PATCH 17/17] auto commit --- notes/计算机网络.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/notes/计算机网络.md b/notes/计算机网络.md index 42add860..abb448de 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -46,7 +46,6 @@ * [域名系统 DNS](#域名系统-dns) * [文件传输协议 FTP](#文件传输协议-ftp) * [远程终端协议 TELNET](#远程终端协议-telnet) - * [万维网 WWW](#万维网-www) * [电子邮件协议](#电子邮件协议) * [动态主机配置协议 DHCP](#动态主机配置协议-dhcp) * [点对点传输 P2P](#点对点传输-p2p) @@ -768,10 +767,6 @@ TELNET 用于登录到远程主机上,并且远程主机上的输出也会返 TELNET 可以适应许多计算机和操作系统的差异,例如不同操作系统系统的换行符定义。 -## 万维网 WWW - -[HTTP](https://github.com/CyC2018/InterviewNotes/blob/master/notes/HTTP.md) - ## 电子邮件协议 一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件发送协议和读取协议。其中发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。

klWrK==@?_dJZpb=&E_Mw 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 E0FotAaR2}S literal 0 HcmV?d00001 diff --git a/pics/8cc671f0-7134-44b1-a7b5-6d24fe55e1c1.jpg b/pics/8cc671f0-7134-44b1-a7b5-6d24fe55e1c1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e6608b251f7e44d6b14ce8ca40ff26d0f1e785b GIT binary patch literal 79872 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