多线程栅栏实现的java源码
时间: 2023-11-27 08:06:02 浏览: 41
下面是一个使用Java多线程栅栏实现的示例代码:
```
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class MultiThreadBarrier {
public static void main(String[] args) {
int numberOfThreads = 5;
CyclicBarrier barrier = new CyclicBarrier(numberOfThreads);
for (int i = 1; i <= numberOfThreads; i++) {
Thread t = new Thread(new Task(i, barrier));
t.start();
}
}
static class Task implements Runnable {
private int id;
private CyclicBarrier barrier;
public Task(int id, CyclicBarrier barrier) {
this.id = id;
this.barrier = barrier;
}
@Override
public void run() {
System.out.println("Thread " + id + " is running.");
try {
barrier.await();
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
System.out.println("Thread " + id + " is done.");
}
}
}
```
在这个示例代码中,我们使用了Java内置的CyclicBarrier类。该类允许我们在多个线程之间创建一个栅栏,直到所有线程都到达栅栏位置才会继续执行。
在这个示例中,我们创建了5个线程,并将它们传递到一个名为Task的Runnable实现中。在Task中,每个线程将打印自己的ID,然后等待所有线程到达栅栏位置。一旦所有线程都到达栅栏位置,它们将继续执行,并打印它们完成了它们的任务。