jdk1.5以後將同步和鎖封裝成了物件。
並將操作鎖的隱式方法定義到了該物件中。
將隱式動作變成了顯示動作
//建立乙個鎖物件
lock lock=new reentrantlock();
//通過已有的鎖獲取該鎖上的監視器物件
condition con=lock.newcondition();
乙個鎖上面可以掛多個***物件。比如。我們可以在lock這個鎖上面,掛乙個生產者的***和掛乙個消費者的***。
這樣做的,可以避免,我們在做生產者消費者的問題,產生的小問題。
小問題指的notifyall把所以的執行緒都喚醒的問題。因為這個也會喚醒本方的執行緒,產生效率低。
class resource catch (interruptedexception e)
}this.name=name+count;
count++;
system.out.println(thread.currentthread().getname()+"..生產者5.0.."+this.name);
flag=true;
// notifyall();
// con.signalall();
consumer_con.signal();//喚醒消費者其中的乙個執行緒
}finally
}public
void
out() catch (interruptedexception e)
}system.out.println(thread.currentthread().getname()+"..消費者5.0......."+this.name);
flag=false;
// notifyall();
// con.signalall();
producer_con.signal();
}finally
}}class producer implements runnable
public
void
run()
}}class consumer implements runnable
public
void
run()
}}public
class thread30_1
}
lock介面:出現代替了同步**塊或者同步函式。將同步的隱式鎖操作變成現實鎖的操作。
同時更為靈活。可以乙個鎖上加上多組監視器。
lock():獲取鎖。
unlock():釋放鎖,通常需要定義finally**中。
condition介面:出現替代了object中的wait() notify() notifyall()方法。
將這些監視方法單獨進行了封裝,變成了condition監視器物件。
await();
signal();
signalall();
元件的多執行緒特性
1.元件的多執行緒特性 在設計com元件的時候,需要考慮它在多執行緒環境中執行的情況。因為元件客戶可能在多個執行緒中呼叫這個com物件提供的功能。win32平台,具有兩種執行緒,一種為ui執行緒,ui執行緒擁有自己的訊息迴圈,可以包含視窗,通過訊息迴圈向視窗分發訊息。另一種為輔助線程,也稱工作 者 ...
多執行緒的三大特性
多執行緒的三大特性 原子性 是指乙個操作是不可中斷的。即使是多個執行緒一起執行的時候,乙個操作一旦開始,就不會被其他執行緒干擾。比如,對於乙個靜態全域性變數int i,兩個執行緒同時對它賦值,執行緒a給他賦值為1,執行緒b給他賦值為 1。那麼不管這兩個執行緒 以何種方式。何種步調工作,i的值要麼是1...
多執行緒的三種特性
是指乙個操作是不可中斷的。即使是多個執行緒一起執行的時候,乙個操作一旦開始,就不會被其他執行緒干擾。比如,對於乙個靜態全域性變數int i,兩個執行緒同時對它賦值,執行緒a給他賦值為1,執行緒b給他賦值為 1。那麼不管這兩個執行緒 以何種方式。何種步調工作,i的值要麼是1,要麼是 1.執行緒a和執行...