java线程间通信

来源:互联网 发布:linux新建用户组 编辑:程序博客网 时间:2024/05/22 17:01
public class ThreadTest {public static void main(String[] args) throws Exception {final Bussiness business = new Bussiness();Thread thread1 = new Thread() {@Overridepublic void run() {business.SubThread();}};Thread thread2 = new Thread() {@Overridepublic void run() {business.MainThread();}};thread1.start();thread2.start();}}class Bussiness {      private static Object LOCK = new Object();          static int num = 1;static int index = 0;static String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";      public void MainThread() {        synchronized (LOCK) {//notify和wait的对象一定要和synchronized的对象保持一致  while(index < str.length()) {        if (num%3==0) {        System.out.println(str.charAt(index));        index++ ;        num++ ;            if(num%3==1 || num%3==2) {                try {                LOCK.notify();                LOCK.wait();                } catch (InterruptedException e) {                  e.printStackTrace();                  }                }        }}        }      }        public void SubThread() {    synchronized (LOCK){while(num <= 52) {                if (num%3==1 || num%3==2) {                System.out.println(num);                num++ ;                    if(num%3==0) {                    LOCK.notify();                    try {                      LOCK.wait();                    } catch (InterruptedException e) {                      e.printStackTrace();                      }                    }                }}    }    }}

0 0
原创粉丝点击