傳統執行緒同步通訊技術

2021-09-01 09:35:01 字數 1012 閱讀 6644

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 方法。當前執行緒必須擁有這個物件...