多线程循环打印ABC10次
2012-03-21 20:44
363 查看
package rainbow.thread; public class PrintABC { private int counta = 0, countb = 0, countc = 0; private boolean printa = false, printb = false, printc = false; private int printcount = 0; public void printa(){ synchronized(this){ while(!(printcount == 0 || (printb && printc))){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("A"); printa = true; //reset printb = printc = false; counta++; printcount++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } notifyAll(); } } public void printb(){ synchronized(this){ while(!printa || (counta - countb == 0)){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("B"); printb = true; countb++; printcount++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } notifyAll(); } } public void printc(){ synchronized(this){ while(!printb || (countb - countc == 0)){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("C"); printc = true; //reset a printa = false; countc++; printcount++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } notifyAll(); } } public int getPrintcount() { return printcount; } public void setPrintcount(int printcount) { this.printcount = printcount; } }
package rainbow.thread; public class PrintThread implements Runnable { private PrintABC abc = null; public PrintThread(PrintABC abc){ this.abc = abc; } public void run() { while(abc.getPrintcount() <= 30){ abc.printa(); } } }
package rainbow.thread; public class TestThread { public static void main(String[] args) { PrintABC abc = new PrintABC(); new Thread(new PrintThread(abc)).start(); new Thread(new PrintThread1(abc)).start(); new Thread(new PrintThread2(abc)).start(); } }
相关文章推荐
- 多线程(至少三个线程)分别打印A、B、C,要求按ABC的顺序循环打印10次。
- Java多线程循环打印ABC 10次,可能是东半球最美解决方案了
- Java多线程 循环打印ABC 10次
- java实现【有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABC.】
- 有三个线程A,B,C 循环10次打印出三个线程的名字ABCABCABCABCABCABCABCABCABCABC
- 有三个线程ID分别是ABC,用多线程编程在屏幕上循环打印ABCABC....十次
- 有三个线程A、B、C(线程名称或id),循环打印10次ABCABB…
- Java多线程--三个线程分别打印a,b,c.请用多线程实现循环打印15次abc
- c++多线程实现循环打印ABC
- 有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC
- Java多线程:用三个线程控制循环输出10次ABC
- 三个线程循环打印ABC10次的几种解决方法
- 面试题--三个线程循环打印ABC10次的几种解决方法
- 有三个线程ID分别是A、B、C,请有多线编程 实现 在屏幕上循环打印10次ABCABC......
- java 实现3个线程 依次打印ABC,并且循环10次
- Java多线程:用三个线程控制循环输出10次ABC
- 面试题--三个线程循环打印ABC10次的几种解决方法
- 多线程循环打印ABC
- 迅雷笔试题 (JAVA多线程)启动三个线程,分别打印A B C,现在写一个程序 循环打印ABCABCABC
- java 实现3个线程 依次打印ABC,并且循环10次