程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java-在線等 急急急 怎麼解決

java-在線等 急急急 怎麼解決

編輯:編程解疑
在線等 急急急 怎麼解決

class Resource
{
private String name;
private int count = 1;
//定義一個鎖對象。
private final Lock lock = new ReentrantLock();
//獲取鎖上的Condition對象。為了解決本方喚醒對方的問題。可以一個鎖創建兩個監視器對象。

//定義標記。
private boolean flag = false;

//1,提供設置的方法。
public  void set(String name)//   
{
//獲取鎖。
lock.lock();
try{
while(flag)
try{this.wait();}catch(InterruptedException e){}
this.name = name + count;
count++;//2 3  4
System.out.println(Thread.currentThread().getName()+"......生產者...."+this.name);
//將標記改為true。
flag = true;
//執行的消費者的喚醒。喚醒一個消費者就哦了。
this.notifyAll;
}finally{
lock.unlock();//一定要執行。
}
}
public  void out()// 
{

lock.lock();
try{
while(!flag)
try{this.wait();}catch(InterruptedException e){}//t3等  //t4等
System.out.println(Thread.currentThread().getName()+"....消費者...."+this.name);//消費 商品1
//將標記該為false。
flag = false;
//
this.notifyAll;
}
finally{
lock.unlock();
}
}
}

最佳回答:


http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html
http://blog.csdn.net/zll793027848/article/details/8680785

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved