黑马程序员技术交流社区
标题:
java线程中的wait()
[打印本页]
作者:
李有
时间:
2012-11-30 18:57
标题:
java线程中的wait()
java线程中的调用wait()方法的被阻塞线程,被唤醒后,
是不是还是从wait()语句的下面接着执行啊?
求详解
作者:
郝少普
时间:
2012-11-30 19:33
wait()是用来锁定一个对象的,在调用这个notify()方法前,他后面的代码永远不会被执行。
锁定后不能自动解锁, 必须在另一个线程中调用这个对象的notify()方法,去解锁,而本线程调用的notify() 只能去解开别的线程的锁。
注意,notify()一定是在另外一个线程中调用的,用wait()这样的锁是不可能在自己的线程中解锁的。
作者:
快乐之恋
时间:
2012-11-30 19:40
通常,多线程之间需要协调工作:如果条件不满足,则等待;当条件满足时,等待该条件的线程将被唤醒。在Java中,这个机制的实现依赖于wait/notify。等待机制与锁机制是密切关联的。
例如:
synchronized(obj) {
while(!condition) {
obj.wait();
}
obj.doSomething();
}
当线程A获得了obj锁后,发现条件condition不满足,无法继续下一处理,于是线程A就wait()。
在另一线程B中,如果B更改了某些条件,使得线程A的condition条件满足了,就可以唤醒线程A :
synchronized(obj) {
condition = true;
obj.notify();
}
作者:
崔政
时间:
2012-11-30 19:45
是的,你可以做个试验,两个线程,一个线程循环输出100,输出到60的时候,wait,然后让另一个线程唤醒他,并输出一句话,唤醒后,接着从61继续输出,从哪等,从哪醒
作者:
tfy
时间:
2012-12-1 09:25
Java多线程中wait语句的具体使用 ...
Java多线程在使用的时候会有很多语句需要我们具体的学习,在这其中wait()就是其中的一个。当然我们需要不断的努力学习才能掌握这一个语句的应用,下面的代码会对你学习Java <http://developer.51cto.com/art/200510/6983.htm%20%20>多线程有所帮助。 1.class ThreadA 2.{ 3.public static void main(String[] args) 4.{ 5.ThreadB b=new ThreadB(); 6.b.start(); 7.System.out.println("b is start...."); 8.synchronized(b)//同步,请求获得对象锁,如果是子线程先进入,则这里阻塞 9.{ 10.try 11.{ 12.System.out.println("Waiting for b to complete..."); 13.b.wait();//获得对象锁后,可以调用对象的wait方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2