当前位置: 技术问答>java相关
关于 wait() 和 notify() 的问题
来源: 互联网 发布时间:2017-04-02
本文导语: 为什么我一使用 wait() 就出错了? 还有,所有的对象好象都支持wait() 如下: public class A { public static void main( String args[] ) { try{ Object obj = new Object(); obj.wait(1000)...
为什么我一使用 wait() 就出错了?
还有,所有的对象好象都支持wait() 如下:
public class A
{
public static void main( String args[] )
{
try{
Object obj = new Object();
obj.wait(1000); // 这是什么意思?
String b = "dd";
b.wait(1000); // 和上面的意思相同吗?
}catch( Exception e ){}
}
}
为什么一运行就出错啊? wait()、notify()、notifyAll() 应该怎么用啊?
错误消息: current thread not owner
还有,所有的对象好象都支持wait() 如下:
public class A
{
public static void main( String args[] )
{
try{
Object obj = new Object();
obj.wait(1000); // 这是什么意思?
String b = "dd";
b.wait(1000); // 和上面的意思相同吗?
}catch( Exception e ){}
}
}
为什么一运行就出错啊? wait()、notify()、notifyAll() 应该怎么用啊?
错误消息: current thread not owner
|
你那里不能用obj.wait(1000),应该改为Thread.sleep(1000)
你的目的是要等待1000ms,而不是要中止线程
另外,要public class A extends Thread
你这个程序应继承线程类。obj.wait()中不能加时间,它的作用是挂起线程
你的目的是要等待1000ms,而不是要中止线程
另外,要public class A extends Thread
你这个程序应继承线程类。obj.wait()中不能加时间,它的作用是挂起线程
|
不同,b是什么你看看呢,看api
|
b.wait()必须被包含在 synchronized(b) { ... } 中
即java中的 condition value 必须拥有当前的 monitor.
多说几句:
1 java中线程的实现混淆了线程中的一些概念
2 看样子你对线程不太了解, 而又需要使用, 如果真的需要很关心这个问题的话,
最好还是先看些资料了解一二, 否则很容易出问题.
即java中的 condition value 必须拥有当前的 monitor.
多说几句:
1 java中线程的实现混淆了线程中的一些概念
2 看样子你对线程不太了解, 而又需要使用, 如果真的需要很关心这个问题的话,
最好还是先看些资料了解一二, 否则很容易出问题.