notify无法唤醒wait的有关问题
notify无法唤醒wait的问题
为了提问方便,写了一段程序,不明白为什么notify不能唤醒wait。预期输出应该是不停的输出1,为什么只输出一个1,然后就不动了?
------解决方案--------------------
wait();//这里加上时间就好了。比如wait(1000)
------解决方案--------------------
你应该用另外一条线程notify它
wait时都已经停止了哦,怎么会执行下面的代码呢?
------解决方案--------------------
这个当然不会唤醒了,就如同你把自己催眠了怎么可能再由自己来叫醒自己呢??
------解决方案--------------------
恩恩,需要另外一个线程去监听这个线程的状态,然后notify,4楼正解
------解决方案--------------------
一个线程wait没有参数,自己进入等待队列.没有别人叫他.他都没机会运行呀.notify()执行不到呀.
要写另外一个线程,调用notifyAll()/notify(),才能把他救出来呀.
------解决方案--------------------
当前的线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待,直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。
对于某一个参数的版本,实现中断和虚假唤醒是可能的,而且此方法应始终在循环中使用:
你的线程住于等待状态
你却又想让他去唤醒自己。。。好像 没有 自己已经熟睡的 还可以随时叫醒自己 。。。
API 参考~。~
------解决方案--------------------
顶!!!!!!!!!!
------解决方案--------------------
这是典型的死锁问题!!!
------解决方案--------------------
自己睡着了wait开始等待,你自己可以叫醒你自己吗? 典型的....
------解决方案--------------------
顶16搂!
------解决方案--------------------
------解决方案--------------------
为了提问方便,写了一段程序,不明白为什么notify不能唤醒wait。预期输出应该是不停的输出1,为什么只输出一个1,然后就不动了?
- Java code
class Test implements Runnable { public void run() { try { while (true) { System.out.print(1); synchronized (this) { wait(); notify(); } } } catch (InterruptedException e) { e.printStackTrace(); } } } public class bk { public static void main(String[] args) { Test t = new Test(); new Thread(t).start(); } }
------解决方案--------------------
wait();//这里加上时间就好了。比如wait(1000)
------解决方案--------------------
你应该用另外一条线程notify它
wait时都已经停止了哦,怎么会执行下面的代码呢?
------解决方案--------------------
这个当然不会唤醒了,就如同你把自己催眠了怎么可能再由自己来叫醒自己呢??
------解决方案--------------------
恩恩,需要另外一个线程去监听这个线程的状态,然后notify,4楼正解
------解决方案--------------------
一个线程wait没有参数,自己进入等待队列.没有别人叫他.他都没机会运行呀.notify()执行不到呀.
要写另外一个线程,调用notifyAll()/notify(),才能把他救出来呀.
------解决方案--------------------
当前的线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待,直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。
对于某一个参数的版本,实现中断和虚假唤醒是可能的,而且此方法应始终在循环中使用:
你的线程住于等待状态
你却又想让他去唤醒自己。。。好像 没有 自己已经熟睡的 还可以随时叫醒自己 。。。
API 参考~。~
------解决方案--------------------
顶!!!!!!!!!!
------解决方案--------------------
这是典型的死锁问题!!!
------解决方案--------------------
自己睡着了wait开始等待,你自己可以叫醒你自己吗? 典型的....
------解决方案--------------------
顶16搂!
------解决方案--------------------
------解决方案--------------------