JAVA多线程按指定顺序执行线程 Condition应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA多线程按指定顺序执行线程 Condition应用相关的知识,希望对你有一定的参考价值。

package concurrent; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; /** * Auth: zhouhongliang * Date:2019/8/1 * 线程等待与唤醒机制 Condition * 按指定顺序执行线程 */ public class ConditionDemo public static void main(String[] args) //声明重入锁 ReentrantLock reentrantLock = new ReentrantLock(); //声明Condition对象 final Condition condition1 = reentrantLock.newCondition(); final Condition condition2 = reentrantLock.newCondition(); final Condition condition3 = reentrantLock.newCondition(); new Thread(() -> //加锁 reentrantLock.lock(); try //等待 condition1.await(); System.out.println("AA"); catch (InterruptedException e) e.printStackTrace(); finally //解锁 reentrantLock.unlock(); ).start(); new Thread(() -> reentrantLock.lock(); try condition2.await(); System.out.println("BB"); condition1.signal(); catch (InterruptedException e) e.printStackTrace(); finally reentrantLock.unlock(); ).start(); new Thread(() -> reentrantLock.lock(); try condition3.await(); System.out.println("CC"); condition2.signal(); catch (InterruptedException e) e.printStackTrace(); finally reentrantLock.unlock(); ).start(); new Thread(() -> reentrantLock.lock(); try System.out.println("DD"); //唤醒 condition3.signal(); catch (Exception e) e.printStackTrace(); finally reentrantLock.unlock(); ).start();

输出结果:
DD
CC
BB
AA

Process finished with exit code 0

以上是关于JAVA多线程按指定顺序执行线程 Condition应用的主要内容,如果未能解决你的问题,请参考以下文章

MFC中如何让多线程按先后顺序执行,第一个来的先执行,以后按先后到达的顺序执行

面试官:Java中线程是按什么顺序执行的?

Java多线程系列四——控制线程执行顺序

SpringBoot @Scheduled多线程执行

Java深入学习12:线程按目标顺序执行以及Lock锁和Condiiton接口

JAVA多线程优先级运行顺序的问题