java thread中的wait()和notify()

  • 时间:
  • 浏览:0

生产者:

当亲戚亲戚我门我门 调用应用程序类的sleep()、suspend()、yield()、wait()等措施回会原困应用程序进入阻塞情况汇报。

最后,关于 wait() 和 notify() 措施再说明三点:

消费者:

打印结果:

其次,前面叙述的所有措施都可在任何位置调用,怎么让有一种对措施却前要在 synchronized措施或块中调用,理由也很简单,不到在synchronized 措施或块中当前应用程序才占有锁,才有锁都都都上能释放。同样的道理,调用有一种对措施的对象上的锁前要为当前应用程序所拥有,从前才有锁都都都上能释放。怎么让,有一种对措施调用前要放置在从前的 synchronized措施或块中,该措施或块的上锁对象而是调用有一种对措施的对象。若不满足有一种条件,则应用程序虽然仍能编译,但在运行回会突然出现IllegalMonitorStateException异常。

运行结果:

首先,sleep()、suspend()、yield ()等措施都隶属于 Thread 类,但wait()/notify()有一种对却直接隶属于Object 类,也而是说,所有对象都拥有有一种对措施。初看起来这十分不可思议,怎么让实际上却是很自然的,怎么让有一种对措施阻塞前要释放占用的锁,而锁是任何对象都具有的,调用对象的 wait() 措施原困应用程序阻塞,怎么让该对象上的锁被释放。而调用对象的notify()措施则原困因调用该对象的 wait() 措施而阻塞的应用程序中随机挑选的另一一个多多解除阻塞(但要等到获得锁后才真正可执行)。

了解更删改信息都都都上能参考:java 应用程序详解

java thread有有有一种情况汇报类型

再写另一一个多多测试类作为主应用程序:

先写另一一个多多计数应用程序类CountThread: