場景:
由於業務需要多執行緒併發操作,並且多執行緒之間是有一定的依賴關係,比如a執行緒儲存資料,b執行緒則解析資料,即b執行緒是需要在a 執行緒執行完之後才開始執行,同樣a執行緒儲存資料的也需要b執行緒對資料解析完成後才開始儲存新的資料,因此a與b兩個執行緒就形成了交替實現,當然具體情況比這個複雜一些,但是大致邏輯類似。
過程就是:a=>b=>a=>b=>....如此迴圈...
其實該動作和佇列類似,即生產者和消費者,佇列長度確定,每生產乙個就消費乙個,確保消費完成後才生產,不過這次實現沒有用到佇列類庫去實現,使用多執行緒亦可以完成,
於是可以使用synchronized和volatile來實現,
具體實現
1、具體業務處理類
public class exchangetest
system.out.println("★★★★★");
ischange = false;
// 喚醒執行緒
notifyall();
}// 執行緒b業務處理,如:解析資料任務
public synchronized void methodb() throws exception
system.out.println("☆☆☆☆☆");
ischange = true;
notifyall();}}
2、建立a和b兩個執行緒
public class threada extends thread
public void run() catch (exception e) }}
public class threadb extends thread
public void run() catch (exception e) }}
3、執行入口client
public class client }}
以上**執行之後,完成實現執行緒交替動作,如下輸出:
★★★★★
☆☆☆☆☆
★★★★★
☆☆☆☆☆
★★★★★
☆☆☆☆☆
★★★★★
☆☆☆☆☆
★★★★★
☆☆☆☆☆
多執行緒交替執行
場景 由於業務需要多執行緒併發操作,並且多執行緒之間是有一定的依賴關係,比如a執行緒儲存資料,b執行緒則解析資料,即b執行緒是需要在a 執行緒執行完之後才開始執行,同樣a執行緒儲存資料的也需要b執行緒對資料解析完成後才開始儲存新的資料,因此a與b兩個執行緒就形成了交替實現,當然具體情況比這個複雜一些...
java多執行緒問題,執行緒交替執行
兩個執行緒,乙個列印1 100的奇數,乙個列印1 100的偶數 要求 執行緒1列印5個之後,執行緒2開始列印,執行緒2列印5個之後,執行緒1再開始列印,以此迴圈。package threadtest public class test1 catch interruptedexception e 當s...
Java多執行緒交替輸出01010
1.先簡單了解多執行緒併發,同步和非同步的概念 多執行緒併發時,多個執行緒同時請求同乙個資源,必然導致此資源的資料不安全,a執行緒修改了b執行緒的處理的資料,而b執行緒又修改了a執行緒處理的數理。顯然這是由於全域性資源造成的,有時為了解 決此問題,優先考慮使用區域性變數,退而求其次使用同步 塊,出於...