操作系统作业是模拟超市运行,多线程的问题。
做完之后,对多线程同步和性能的理解进了一步。
一,同步的目的是确保进入代码块后可以看到由同一个锁控制的对象的所有状态转变结果。
如果不同步可能导致
1,观察到对象的不一致状态
2,看不到其他线程对对象的修改
二,wait()的标准写法
java 代码
- synchronized(obj)
- {
- while(<conditon>)
- {
- obj.wait();
- }
- // to do
- }
在其他线程通知他
java 代码
- synchronized(obj)
- {
- obj.notifyAll();
- }
三,如果只有一个线程在一个特定对象上等待,应该用notify()
四,在同步块中,尽量做少的事。不要在其中调用外部提供的方法,可能死锁
感谢Joshua Bloch和他的<<Effective Java>>
本文通过模拟超市运行的作业案例,介绍了多线程同步的重要性和具体实现方法。文章阐述了同步的目的,即确保能观察到同一锁控制下对象的状态变化,并讨论了不同步可能导致的问题。此外,还详细说明了wait()和notify()的标准使用方式。

10万+

被折叠的 条评论
为什么被折叠?



