[英]Java Thread: How to execute a statement simultaneously
考慮到我有一個運行方法如下,我試圖為MyThread創建四個線程。 語句1到3可以同時在線程中運行,也可以不同地運行。 但是我希望語句4由線程同時執行。 我可以在語句4之前合並所有線程並由所有線程同時執行語句4嗎?
class MyThread extends Thread
{
public void run()
{
//Statement 1
//Statement 2
//Statement 3
//Statement 4
}
}
使用CyclicBarrier,它最適合您的要求。
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierUsage {
private static final int NUMBER_OF_THREADS = 2;
public static void main(String[] args) {
CyclicBarrier barrier = new CyclicBarrier(NUMBER_OF_THREADS);
Thread t1 = new Thread(new PrimaryParty(barrier));
Thread t2 = new Thread(new PrimaryParty(barrier));
t1.start();
t2.start();
}
}
class PrimaryParty implements Runnable {
private CyclicBarrier barrier;
public PrimaryParty(CyclicBarrier barrier) {
this.barrier = barrier;
}
@Override
public void run() {
//Statement 1
//Statement 2
//Statement 3
try {
barrier.await();
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
//Statement 4
}
}
有幾種方法可以做您想要的。 也許最簡單的方法是使用Java的Future實現。 您可以定義一個(或多個)Future,它們將在單獨的線程上執行,阻塞,直到它們全部由Future.get()完成,然后根據結果完成其他任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.