当前位置: 技术问答>java相关
哪位大哥能将解一下notify()和wait()的用法
来源: 互联网 发布时间:2015-01-15
本文导语: 看来看去没看明白。:( 能不能给个实际调用的简单例子? | ?直接用不就得了……遇到什么问题吗? 先让要等待的线程wait()……另一个线程再notify()这个线程就是啊…… | ...
看来看去没看明白。:(
能不能给个实际调用的简单例子?
能不能给个实际调用的简单例子?
|
?直接用不就得了……遇到什么问题吗?
先让要等待的线程wait()……另一个线程再notify()这个线程就是啊……
先让要等待的线程wait()……另一个线程再notify()这个线程就是啊……
|
wait(),notify()出现与共享对象中(多个线程共享),用于暂停一个线程,在适当的时候继续线程。Both wait() and notify() must be called in synchroninzed code.
下例中类Mailbox 用于实现一个共享对象,用于其他线程存储和获得消息。
class Mailbox{
private boolean request;
private String message;
public synchronized void storeMessage(String message){
while(request == true){
try{
wait();
}catch (InterruptedException e){}
}
request = true;
this.message = message;
notify();
}
public synchronized String retrieveMessage(){
while(request == false){
try{
wait();
}catch (InterruptedException e){}
}
request = false;
notify();
return message;
}
}
下例中类Mailbox 用于实现一个共享对象,用于其他线程存储和获得消息。
class Mailbox{
private boolean request;
private String message;
public synchronized void storeMessage(String message){
while(request == true){
try{
wait();
}catch (InterruptedException e){}
}
request = true;
this.message = message;
notify();
}
public synchronized String retrieveMessage(){
while(request == false){
try{
wait();
}catch (InterruptedException e){}
}
request = false;
notify();
return message;
}
}
|
关于 Java 中多线程编程、线程同步可以整整写几本书,我自问没有能力三言两语说清楚,我自已也不一定清楚。:) 你的要求实在是太高了,我所能做到的只是就事论事吧。