解釋JAVA程式碼~
終於要結束啦
程式碼
package Concurrent;
import java.util.concurrent.*;
public class CyclicBarrier01 {
public static void main(String[] args) {
//CyclicBarrier cb = new CyclicBarrier(3, new Action());
CyclicBarrier cb = new CyclicBarrier(3,
()-> System.out.println("這是新的執行緒!"));
System.out.println("Starting");
new MyThread01(cb, "A");
new MyThread01(cb, "B");
new MyThread01(cb, "C");
}
}
class MyThread01 implements Runnable {
CyclicBarrier cbar;
String name;
MyThread01(CyclicBarrier c, String n) {
cbar = c;
name = n;
new Thread(this).start();
}
public void run() {
System.out.println(name);
try {
cbar.await();
System.out.println("恢復後會執行這一行 >.<!---------");
} catch (BrokenBarrierException exc) {
System.out.println(exc);
} catch (InterruptedException exc) {
System.out.println(exc);
}
}
}
class Action implements Runnable {
public void run() {
System.out.println("這是新的執行緒!");
}
}
顯示
解釋程式碼
這段Java程式碼示範了如何使用CyclicBarrier(循環障礙器)來同步多個執行緒的工作。讓我們逐段解釋它:
在 main
方法中,首先創建了一個 CyclicBarrier
物件 cb
,它的構造函數接受兩個參數:計數器(count)和動作(action)。
創建了三個執行緒 MyThread01
,每個執行緒都傳入 cb
和一個名稱。這三個執行緒將在同時運行。
在 MyThread01
執行緒的 run
方法中,首先印出名稱,然後使用 cbar.await()
暫停執行緒,等待其他執行緒。
CyclicBarrier
會等待所有三個執行緒都到達障礙點(await()
),然後執行障礙點的動作。
在這個程式中,動作是一個實現 Runnable
接口的 Action
類別,它印出一條訊息。
當所有三個執行緒都到達障礙點後,動作中的內容將被執行。
總結來說,CyclicBarrier 用於同步多個執行緒,讓它們在某個障礙點處暫停,直到所有執行緒都到達該障礙點,然後執行特定的動作。這有助於協調多個執行緒的工作。
謝謝收看