多執行緒交替執行

2021-08-10 02:19:41 字數 1214 閱讀 2344

場景:

由於業務需要多執行緒併發操作,並且多執行緒之間是有一定的依賴關係,比如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執行緒處理的數理。顯然這是由於全域性資源造成的,有時為了解 決此問題,優先考慮使用區域性變數,退而求其次使用同步 塊,出於...