Way*_*ver 0 java multithreading synchronize
我有一个班级商店。在 main 中我在 main 中创建了 3 个商店对象
Thread thread1 = new Thread(shop1);
Thread thread2 = new Thread(shop2);
Thread thread3 = new Thread(shop3);
threads.add(thread1);
threads.add(thread2);
threads.add(thread3);
for (Thread t : threads) {
t.start();
}
Run Code Online (Sandbox Code Playgroud)
商店类中的 run 方法
@Override
public void run() {
for(int day=0;day<=360;++day) {
if (day% 30 == 0) {
delivery();
}
CODE...
}
}
Run Code Online (Sandbox Code Playgroud)
我希望线程每 30 天同步一次。所以每 30 天线程就会互相等待。
使用 Thread.join() 是最简单的,但是当我在 run() 中时如何使用它。
我也在考虑做而不是360天,12次30天
public void run() {
for(int day=0;day<30;++day) {
if (day% 30 == 0) {
delivery();
}
CODE...
Run Code Online (Sandbox Code Playgroud)
并在 main join() 中使用,但随后存在如何重新启动该方法的问题。
我可以做什么来同步这个?
你应该熟悉CyclicBarrier课堂。
一种同步辅助工具,允许一组线程全部等待彼此到达公共障碍点。CyclicBarriers 在涉及固定大小的线程组且偶尔必须相互等待的程序中非常有用。屏障被称为循环屏障,因为它可以在等待线程被释放后被重新使用。
请注意,您可以选择定义一个 BarrierAction,它由最后一个到达屏障的线程执行。
请参阅 Java 中的教程CyclicBarrier
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |