searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Java多线程——让多个线程等待就绪之后一起执行

2024-02-20 06:53:26
1
0

背景

多线程同时准备好之后同时执行任务

关键方法

我们用CyclicBarrier来让线程进入等待就绪的状态,一旦这些线程准备就绪,就可以让这10个线程跑起来。

代码示例

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

public class CyclicBarrierExample {
    private static class Task implements Runnable {

        private CyclicBarrier barrier;

        public Task(CyclicBarrier barrier) {
            this.barrier = barrier;
        }

        @Override
        public void run() {
            try {
                System.out.println(Thread.currentThread().getName() + " 准备就绪");
                barrier.await();
                System.out.println(Thread.currentThread().getName() + " 起跑");
            } catch (InterruptedException ex) {
            } catch (BrokenBarrierException ex) {
            }
        }
    }

    public static void main(String args[]) {

        final CyclicBarrier cb = new CyclicBarrier(10, new Runnable(){
            @Override
            public void run(){
                //一旦所有线程准备就绪,这个动作就执行
                System.out.println("准备就绪,开始!");
            }
        });

        for(int i = 1;i<=10;i++) {
                Thread  sporter= new Thread(new Task(cb) ,i+"号赛道");
                sporter.start();
        }

    }

}
0条评论
0 / 1000