第一个到10notify第二个,wait
第二个...到10notify第一个,wait
。。
第二个...到10notify第一个,wait
。。
解决方案 »
- 使用JSON跟XML相互报错java.lang.NoSuchMethodError 求解!!!
- 一道Java题,三个问题
- 项目由jbuilder迁移到myeclipse上的GUI问题
- 串口全双工通信
- 求各位高手帮帮小女子吧,对于类库怎样填加
- 请教一个关于menuitem的问题,在线等,谢谢!!
- [求助]如何理解“java利用接口实现了多重继承的优点,并去除了多重继承的缺点”这句话?
- jce 求助
- 帮帮我!
- 我准备的一个关于Struts和MVC的演讲稿,Review 给分。
- 如何判断一个字符是不是半角的英文字母??
- 菜鸟题---用一个线程的两个按钮控制另一个线程的wait()和notify() ,程序如下,实现不了
谢谢啦!!
当其它线程改变了共享变量,只要调用notify()就可以通知正在等待的现成重新占用管程并唤醒该线程所以关键是找到一个共享变量,从而来实现同步
{private boolean Flag=false;
public synchronized void get(){
if(!Flag)
try{wait();}catch(Exception e){}
for(int i=0;i<10;i++)
System.out.println("取出"+(i+1));
Flag=!Flag;
notify();
}
public synchronized void put(){
if(Flag)
try{wait();}catch(Exception e){}
for(int i=0;i<10;i++)
System.out.println("放入"+(i+1));
Flag=!Flag;
notify();
}}
class produce implements Runnable{
Q q;
public produce(Q q)
{
this.q=q;
}public void putS(){
q.put();
}
public void run(){
while(true)
putS();
}}
class customer implements Runnable{
Q q;
boolean F=false;
int i=0;
public customer(Q q)
{
this.q=q;
}public void getS(){
while(!F)
{
q.get();
}
}
public void stop(){
F=true;
}public void run(){
while(true)
getS();
}
}public class ThreadTest{
public static void main(String[] arg){
Q q=new Q();
new Thread(new produce(q)).start();
customer t=new customer(q);
new Thread(t).start();
}}这是地二个,第一个和这差不多.
http://blog.csdn.net/treeroot/archive/2004/11/11/176976.aspx