Java控制多线程执行顺序
2014-05-08 20:46
381 查看
package net.jasonjiang.thread; import java.io.IOException; public class ThreadTestNew { public static void main(String[] args) throws IOException { final Test obj = new Test(); new Thread() { public void run() { obj.m1(); } }.start(); new Thread() { public void run() { obj.m2(); } }.start(); new Thread() { public void run() { obj.m3(); } }.start(); } } class Test { volatile int target = 1; public synchronized void m1() { for (int i = 0; i < 10; i++) { while (target == 2 || target == 3) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("m1() =" + i); target = 2; notifyAll(); } } public synchronized void m2() { for (int i = 0; i < 10; i++) { while (target == 1 || target == 3) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("m2() =" + i); target = 3; notifyAll(); } } public synchronized void m3() { for (int i = 0; i < 10; i++) { while (target == 1 || target == 2) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("m3() =" + i); target = 1; notifyAll(); } } }
运行结果:
m1() =0 m2() =0 m3() =0 m1() =1 m2() =1 m3() =1 m1() =2 m2() =2 m3() =2 m1() =3 m2() =3 m3() =3 m1() =4 m2() =4 m3() =4 m1() =5 m2() =5 m3() =5 m1() =6 m2() =6 m3() =6 m1() =7 m2() =7 m3() =7 m1() =8 m2() =8 m3() =8 m1() =9 m2() =9 m3() =9
相关文章推荐
- java控制多线程执行顺序
- java控制多线程执行顺序
- Java多线程系列四——控制线程执行顺序
- java 多线程控制线程执行顺序
- Java多线程与并发应用-(11)-用Lock+Condition实现1,2,3 三个模块按顺序执行。
- 多线程:控制多线程按顺序执行
- java多线程编码,顺序执行(同步)
- java中结合单例模式,控制单例类的某方法在被多线程调用时,只被1个线程调用执行,执行完毕后才被另一线程调用
- java中结合单例模式,控制单例类的某方法在被多线程调用时,只被1个线程调用执行,执行完毕后才被另一线程调用
- java中线程执行顺序控制
- Java 多线程 (PART VII) 使用join()方法保证线程的执行顺序
- java 中线程执行顺序控制
- Java--线程的先后执行顺序控制
- JAVA Lock 多线程顺序执行
- Java控制3个线程顺序执行2次
- java join 多线程顺序执行
- java 中线程执行顺序控制
- java多线程学习之启动顺序不等于执行顺序
- java中控制线程间执行顺序的方法
- Java 在多线程当中顺序执行程序