三个线程交替打印A、B、C的问题
2017-03-12 22:24
288 查看
public class ThreadTest_syn implements Runnable { private String name; private Object prev; private Object self; private ThreadTest_syn(String name, Object prev, Object self) { this.name = name; this.prev = prev; this.self = self; } @Override public void run() { int count = 10; while (count > 0) { //先拥有前一个锁对象 synchronized (prev) { //在拥有自身锁对象 synchronized (self) { System.out.print(name); count--; //释放自身锁 self.notify(); } try { //释放前一个锁对象 prev.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } public static void main(String[] args) throws Exception { Object a = new Object(); Object b = new Object(); Object c = new Object(); ThreadTest_syn pa = new ThreadTest_syn("A", c, a); ThreadTest_syn pb = new ThreadTest_syn("B", a, b); ThreadTest_syn pc = new ThreadTest_syn("C", b, c); new Thread(pa).start(); Thread.sleep(100); //确保按顺序A、B、C执行 new Thread(pb).start(); Thread.sleep(100); new Thread(pc).start(); Thread.sleep(100); }
相关文章推荐
- 建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。
- 三个Java线程(使用线程池)交替打印1到75个数的两种解法
- 建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC
- 建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。
- 控制三个线程交替打印ABC
- 三个线程交替打印ABC
- Java实现两个线程交替打印问题
- 三个Java线程(使用线程池)交替打印1到75个数的两种解法
- 有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC
- 线程交替打印
- 两个线程交替打印ABABAB
- 经典线程处理打印ABC问题分析
- 使用Java线程并发库实现两个线程交替打印的线程题
- 经典线程同步问题之3个线程交替数数
- java wait()方法notifyAll()方法实现三个线程打印A,B,C字符
- 有三个线程名字分别是A、B、C,每个线程只能打印自己的名字,在屏幕上顺序打印 ABC,打印10次。不准使用线程的sleep()
- 两个线程交替打印字符串
- 迅雷笔试题 (JAVA多线程)启动三个线程,分别打印A B C,现在写一个程序 循环打印ABCABCABC
- 多线程(至少三个线程)分别打印A、B、C,要求按ABC的顺序循环打印10次。
- java实现【有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABC.】