有4个线程A、B、C、D,分别打印1、2、3、4,请同时启动他们,但是要求按照1234的顺序输出结果
2015-10-29 00:00
369 查看
1、 有4个线程A、B、C、D,分别打印1、2、3、4,请同时启动他们,但是要求按照1234的顺序输出结果。
public class TestABCThread3 {
private Object lock = new Object();
private int count;
public static void main(String[] args) {
TestABCThread3 abc = new TestABCThread3();
new Thread(abc.new Run("C", 3)).start();
new Thread(abc.new Run("D", 4)).start();
new Thread(abc.new Run("A", 1)).start();
new Thread(abc.new Run("B", 2)).start();
}
class Run implements Runnable {
private String _name = "";
private int _threadNum;
public Run(String name, int threadNum) {
_name = name;
_threadNum = threadNum;
}
@Override
public void run() {
synchronized (lock) {
while (true) {
if (count % 4 == _threadNum - 1) {
System.out.println("Thread-Name:" + _name+",No:"+this._threadNum);
count++;
lock.notifyAll();
break;
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
}
public class TestABCThread3 {
private Object lock = new Object();
private int count;
public static void main(String[] args) {
TestABCThread3 abc = new TestABCThread3();
new Thread(abc.new Run("C", 3)).start();
new Thread(abc.new Run("D", 4)).start();
new Thread(abc.new Run("A", 1)).start();
new Thread(abc.new Run("B", 2)).start();
}
class Run implements Runnable {
private String _name = "";
private int _threadNum;
public Run(String name, int threadNum) {
_name = name;
_threadNum = threadNum;
}
@Override
public void run() {
synchronized (lock) {
while (true) {
if (count % 4 == _threadNum - 1) {
System.out.println("Thread-Name:" + _name+",No:"+this._threadNum);
count++;
lock.notifyAll();
break;
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
}
相关文章推荐
- 利用curl 多线程 模拟 并发的详解
- ThreadLocal类深刻理解
- 关于监控线程池运行状态的一些api
- httpclient 接口测试多线程并发类封装
- 多线程并发时,list 集合add 方法数据丢失原因解答
- Java线程安全之volatile关键字
- 生产者/消费者问题的多种Java实现方式
- 生产者/消费者问题的多种Java实现方式
- 生产者/消费者问题的多种Java实现方式
- 当单例模式遇到多线程并发的时候
- 多线程间共享数据,简单Demo
- 避免死锁的常用方法
- 简单谈谈RxJava和多线程并发
- Python多进程并发与多线程并发编程实例总结
- ListView的优化
- 阶段性理解scrapy
- APACHE如何里一个站点绑定多个域名?用ServerAlias
- 有关lower_bound的比较函数
- HDOJ 题目2224 The shortest path||POJ 题目2677 Tour(双调TSP)
- LeetCode11:Container With Most Water