博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java控制多线程执行顺序
阅读量:5363 次
发布时间:2019-06-15

本文共 2160 字,大约阅读时间需要 7 分钟。

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() =0m2() =0m3() =0m1() =1m2() =1m3() =1m1() =2m2() =2m3() =2m1() =3m2() =3m3() =3m1() =4m2() =4m3() =4m1() =5m2() =5m3() =5m1() =6m2() =6m3() =6m1() =7m2() =7m3() =7m1() =8m2() =8m3() =8m1() =9m2() =9m3() =9

转载于:https://www.cnblogs.com/jasontec/p/9601680.html

你可能感兴趣的文章
bpm功能指标
查看>>
【bzoj2882】工艺 后缀自动机+STL-map
查看>>
[redis] redis
查看>>
Linux的加密认证功能以及openssl详解
查看>>
[Tools] 使用XP远程登录Win8系统
查看>>
【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
查看>>
HDU- 2265 Encoding The Diary
查看>>
socket基本概念
查看>>
[第三方]SCNetworkReachability 获取网络状态控件使用方法
查看>>
在Windows上使用putty连接一台Linux主机
查看>>
jQuery之DOM属性
查看>>
iframe子页面获取父页面元素和window对象
查看>>
Socket常见错误
查看>>
百度地图2.0API和3.0API。你想要的百度地图的这都有
查看>>
专业词汇
查看>>
星期五的收获
查看>>
深入理解JavaScript系列(45):代码复用模式(避免篇)
查看>>
介绍XXTEA加密算法及其C实现
查看>>
nnet3的代码分析
查看>>
模板的分离式编译
查看>>