JAVA 多线程二
JAVA 多线程2
package com.test; public class ThreadTest2 { public static void main(String[] args) { Bizs biz = new Bizs(); ThreadAdd add1 = new ThreadAdd(biz); ThreadAdd add2 = new ThreadAdd(biz); ThreadSub sub1 = new ThreadSub(biz); ThreadSub sub2 = new ThreadSub(biz); sub1.start(); sub2.start(); add1.start(); add2.start(); } } class ThreadAdd extends Thread{ private Bizs biz; public ThreadAdd(Bizs biz){ this.biz = biz; } @Override public void run() { for (int i = 0; i < 100; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } biz.add(); } } } class ThreadSub extends Thread{ private Bizs biz; public ThreadSub(Bizs biz){ this.biz = biz; } @Override public void run() { for (int i = 0; i < 100; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } biz.sub(); } } } class Bizs{ private int j = 0; public synchronized void add(){ while(j > 0){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(++j); this.notifyAll(); } public synchronized void sub(){ while(j <= 0){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(--j); this.notifyAll(); } }