1、用java编程设计四个线程,其中两个线程每次都对j加1,另两个线程每次对j减1,线程要用两种实现方式。
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(); }}
结果:
加线程2:1169
加线程1:1170减线程1:1169减线程2:1168加线程1:1169加线程2:1170减线程2:1169减线程1:1168减线程2:1167...