一本书同时只能借给一个人。现在有一本书,图书馆已经把这本书借了张三。
在简单的synchrnozed 同步机制下,李四如果想借,先要去图书馆查看书有没有还回来。李四是个心急的人,他每天都去图书馆查;而张三看书看得慢,过了半个月才把书还回来,结果李四在这半个月里全都白跑了,浪费了不少交通车费
而如果使用wait/notify机制,李四就不用白忙了。他第一次去图书馆时发现书已借走,就回家静静等待(wait);张三把书还掉后,通知(notify)李四,李四去图书馆拿书即可。整个过程中,李四没有白跑,没浪费钱。
回到计算机世界:
书 -- 临界资源,需互斥地访问
张三,李四 -- 两个竞争的线程
坐车去图书馆查书 -- 轮询
车费 -- CPU空间
等待 -- wait
通知下一个借书者 -- notify
也就是说,若使用简单的synchonized机制实现互斥,会导致线程主动发起轮询,若N次轮询没有成功,就产生了N次的CPU空间浪费;如果加上了 wait/notify机制,就可以避免这些无谓的轮询,节省CPU的消耗。
分享到:
相关推荐
wait和notify讲解
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
wait()、notify()和notifyAll()方法2---马克-to-win java视频
java中多线程编程notify、wait的使用
Java 同步方式 wait和notify/notifyall
使用Java多线程的wait和notify方法实现最简单的生产者消费者模式
3(深入理解Wait、Notify和Wait与sleep区别).rar
主要介绍了java多线程wait,notify,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编和大家一起来学习一下吧
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
源码—Java多线程5—死锁和wait notify notifyAll
java多线程之wait,notify的用法([ 详解+实例 ]).
开一个子线程来完成一个循环处理的工作,我在主线程中能灵活控制这个子线程的开始、暂停/继续、结束。
java多线程下wait和notify的作用
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
一个理解wait()与notify()的例子,让你更好理解.
主线程去控制子线程wait与notify
wait()、notify()和notifyAll()方法1---马克-to-win java视频
Java多线程的样例代码,工程,内含wait()、notify()和sychronized的使用范例。
一个简单的线程同步机制,也能实例了解wait notify的使用,notify与notifyAll的区别
wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。 在 Java 中可以用 wait、notify 和 notifyAll 来实现...