package cn.com.songjy.test.socket.thread;
import org.apache.commons.logging.log;
import org.apache.commons.logging.logfactory;
/***
* classname:traditionalthreadcommunication
* 子執行緒迴圈10次,接著主線程迴圈100次,接著又回到子執行緒迴圈10次,接著再回到主線程又迴圈100次,如此迴圈50次
* * @author songjy
* @version 1.0
* @since v1.0
* @date 2013-8-16 下午2:22:53
*/public class traditionalthreadcommunication
}}).start();
for (int j = 0; j < 50; j++) }}
/* synchronized(鎖)一般是放在需要訪問的資源上的 */
class businese catch (interruptedexception e)
}for (int i = 0; i < 10; i++)
sub = false;// 執行完畢,變更狀態
notify();// 本次執行完畢,喚醒其他執行緒(main)
}public synchronized void main(int j) catch (interruptedexception e)
}for (int i = 0; i < 100; i++)
sub = true;// 執行完畢,變更狀態
notify();// 本次執行完畢,喚醒其他執行緒(sub)
}}
備註:wait()、notify()和notifyall()都是object類中的final方法,被所有的類繼承、且不允許重寫的方法
引自:[url]
傳統執行緒同步通訊技術
什麼是執行緒同步通訊呢?其實簡單來說就是執行緒間的等待與喚醒 下面我們來了解一下 1.簡單多執行緒通訊 現在有a b執行緒,讓執行緒a先執行10次迴圈,隨後讓執行緒b執行20次,之後反覆100次 該如何實現呢?需要注意哪些問題?如下 public class main start new threa...
Java傳統執行緒同步通訊
講過了執行緒互斥,接下來了解一下執行緒協作,使得多個任務彼此之間可以一起工作去解決某個問題。傳統定時器和執行緒互斥技術 當任務協作時,關鍵是這些問題之間的握手。為了實現這種握手我們使用了相同的基礎特性 互斥。互斥能夠確保只有乙個任務可以響應某種訊號,這樣就可以排除任何可能的競爭條件。在互斥之上,我們...
黑馬程式設計師 Java中傳統執行緒同步通訊技術
方法簽名 public final void wait throws interruptedexception 導致當前執行緒等待直到另乙個執行緒在這個物件上呼叫notify 方法或者notifyall 方法。換句話說,這個方法的表現就像它簡單的處理呼叫wait 0 方法。當前執行緒必須擁有這個物件...