File tree Expand file tree Collapse file tree 1 file changed +2
-8
lines changed Expand file tree Collapse file tree 1 file changed +2
-8
lines changed Original file line number Diff line number Diff line change 40
40
- 单例模式:懒汉式。静态内部类,在使用时,才加载。此种模式,既是懒加载,又没有加锁影响性能。
41
41
42
42
## 线程模型
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循环执行三个线程。
51
45
52
46
### ABC_Synch
53
47
- synchronized 搭配wait/notify实现。
You can’t perform that action at this time.
0 commit comments