/** * 同时启动三个线程,然后让这个三个线程有顺序的执行 */ public class MyTest { static class MyTask { private static ReentrantLock r1 = new ReentrantLock(); private static Condition conditionA = r1.newCondition(); private static Condition conditionB = r1.newCondition(); private static Condition conditionC = r1.newCondition(); //启动多个线程,然后让每一个线程按照顺序执行 public void execute(String flag) { r1.lock(); try { for (int i = 1; i < 10; i++) { if ("A".equals(flag)) { System.out.println(Thread.currentThread().getName() + " - " + i); conditionB.signal(); //线程B运行 conditionA.await(); } if ("B".equals(flag)) { System.out.println(Thread.currentThread().getName() + " - " + i); conditionC.signal(); conditionB.await(); } if ("C".equals(flag)) { System.out.println(Thread.currentThread().getName() + " - " + i); conditionA.signal(); conditionC.await(); } } } catch (Exception e) { e.printStackTrace(); } finally { r1.unlock(); } } public static void main(String[] args) { final MyTask myTask = new MyTask(); new Thread(new Runnable() { @Override public void run() { myTask.execute("A"); } }, "A").start(); new Thread(new Runnable() { @Override public void run() { myTask.execute("B"); } }, "B").start(); new Thread(new Runnable() { @Override public void run() { myTask.execute("C"); } }, "C").start(); } } }
多线程-让线程按顺序执行
最新推荐文章于 2024-07-21 15:17:43 发布