4 个回答

在java8中可以使用CompletableFuture,可以指定执行顺序,例如:
Thread t1 = new Thread(new Task(),"线程1");
Thread t2 = new Thread(new Task(),"线程2");
Thread t3 = new Thread(new Task(),"线程3");
CompletableFuture.runAsync(()-> t1.start())
.thenRun(()->t2.start())
.thenRun(()->t3.start());
发布于:3年前 (2022-10-19) IP属地:未知

第三种方式是在executors里面,有一个newSingleThreadExecutor()方法,向这个线程池里面添加任务也是按照顺序执行的。


发布于:3年前 (2022-10-19) IP属地:未知

第二种是使用CountDownLatch方式。

CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。它相当于是一个计数器,这个计数器的初始值就是线程的数量,每当一个任务完成后,计数器的值就会减一,当计数器的值为 0 时,表示所有的线程都已经任务了,然后在 CountDownLatch 上等待的线程就可以恢复执行接下来的任务。

发布于:3年前 (2022-10-19) IP属地:未知

第一种方式,可以使用join的方式,例如:

假设现在有3个线程,A,B,C,要求按照A,B,C的顺序进行执行,那么我们在第二个线程里面添加一个 thread1.join(),在第三个线程里面添加thread2.join()即可

发布于:3年前 (2022-10-19) IP属地:未知
我来回答
您需要 登录 后回答此问题!