java wait()方法notifyAll()方法实现三个线程打印A,B,C字符

来源:互联网 发布:手机破解压缩文件软件 编辑:程序博客网 时间:2024/05/01 05:41

 java wait()方法notifyAll()方法

    ...wait()释放对象的锁,让出cpu,让其他的线程执行(同一个对象锁)

    ...notifyAll()方法是唤醒该对象上全部等待的线程

    建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。这个问题用Object的wait(),notify()就可以很方便的解决。代码如下:

 

package com.thread;class printData{  private static int index=0;  public synchronized void priA(){   while(index%3!=0){      try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}   }   System.out.println("A");   index++;   this.notifyAll();   }  public synchronized void priB(){  while(index%3!=1){  try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}  }   System.out.println("B");   index++;   this.notifyAll();  }  public synchronized void priC(){  while(index%3!=2){  try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}  }   System.out.println("C");   index++;   this.notifyAll();  }}public class DataShareDeo {   public static void main(String[] args) {   final printData data= new printData();   new Thread(new Runnable(){public void run() {                for(int i=0;i<10;i++){                  data.priA();                 }}   }).start();   new Thread(new Runnable(){public void run() {                for(int i=0;i<10;i++){                  data.priB();                 }}   }).start();      new Thread(new Runnable(){public void run() {                for(int i=0;i<10;i++){                  data.priC();                 }}   }).start();}}

0 0