Skip to content

Commit f026039

Browse files
authored
Update README.md
1 parent 15dadc9 commit f026039

File tree

1 file changed

+2
-8
lines changed

1 file changed

+2
-8
lines changed

README.md

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,8 @@
4040
- 单例模式:懒汉式。静态内部类,在使用时,才加载。此种模式,既是懒加载,又没有加锁影响性能。
4141

4242
## 线程模型
43-
>用三个线程按顺序循环打印abc三个字母,比如abcabcabc。
44-
使用同步块和wait、notify的方法控制三个线程的执行次序。具体方法如下:从大的方向上来讲,该问题为三线程间的同步唤醒操作,
45-
主要的目的就是ThreadA->ThreadB->ThreadC->ThreadA循环执行三个线程。为了控制线程执行的顺序,那么就必须要确定唤醒、等待的顺序,
46-
所以每一个线程必须同时持有两个对象锁,才能进行打印操作。一个对象锁是prev,就是前一个线程所对应的对象锁,其主要作用是保证当前
47-
线程一定是在前一个线程操作完成后(即前一个线程释放了其对应的对象锁)才开始执行。还有一个锁就是自身对象锁。主要的思想就是,为
48-
了控制执行的顺序,必须要先持有prev锁(也就前一个线程要释放其自身对象锁),然后当前线程再申请自己对象锁,两者兼备时打印。之后
49-
首先调用self.notify()唤醒下一个等待线程(注意notify不会立即释放对象锁,只有等到同步块代码执行完毕后才会释放),再调用
50-
prev.wait()立即释放prev对象锁,当前线程进入休眠,等待其他线程的notify操作再次唤醒。
43+
- 用三个线程按顺序循环打印abc三个字母,比如abcabcabc。使用同步块和wait、notify的方法控制三个线程的执行次序。具体方法如下:
44+
从大的方向上来讲,该问题为三线程间的同步唤醒操作,主要的目的就是ThreadA->ThreadB->ThreadC->ThreadA循环执行三个线程。
5145

5246
### ABC_Synch
5347
- synchronized 搭配wait/notify实现。

0 commit comments

Comments
 (0)