package study;
public class Factory {
int j;
Factory() {
j = 0;
}
synchronized void add() {
j++;
System.out.println(Thread.currentThread().getName() + ":" + j);
}
synchronized void min() {
j--;
System.out.println(Thread.currentThread().getName() + ":" + j);
}
}
package study;
public class T1 implements Runnable {
Factory factory = null;
T1(Factory factory) {
this.factory = factory;
}
public int T1() {
return 1;
}
@Override
public void run() {
while(true) {
factory.add();
try {
Thread.sleep((int)Math.random() * 10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package study;
public class T2 extends Thread {
Factory factory = null;
T2(Factory factory) {
this.factory = factory;
}
@Override
public void run() {
while(true) {
factory.min();
try {
Thread.sleep((int)Math.random() * 10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package study;
public class Test2 {
public static void main(String[] args) {
Factory factory = new Factory();
T1 t1 = new T1(factory);
T2 t2 = new T2(factory);
t2.setName("减线程1");
T2 t3 = new T2(factory);
t3.setName("减线程2");
Thread thread1 = new Thread(t1, "加线程1");
Thread thread2 = new Thread(t1, "加线程2");
thread1.start();
thread2.start();
t2.start();
t3.start();
}
}
出处:https://www.cnblogs.com/duanxz/p/3332990.html