java面试题--4个线程两个线程每次对j增加1另外两个线程对j每次减少1

    技术2026-08-26  8

    //方法一

    public class ThreadTest1 {     private int j;     public static void main(String args[]) {         ThreadTest1 tt = new ThreadTest1();         Inc inc = tt.new Inc();         Dec dec = tt.new Dec();         for (int i = 0; i < 2; i++) {             Thread t = new Thread(inc);             t.start();             t = new Thread(dec);             t.start();         }     }     private synchronized void inc() {         j++;         System.out.println(Thread.currentThread().getName() + "-inc:" + j);     }     private synchronized void dec() {         j--;         System.out.println(Thread.currentThread().getName() + "-dec:" + j);     }     class Inc implements Runnable {         public void run() {             for (int i = 0; i < 5; i++) {                 inc();             }         }     }     class Dec implements Runnable {         public void run() {             for (int i = 0; i < 5; i++) {                 dec();             }         }     } } //方法二 // ----------随手再写的一个-------------  public class A {     JManager j = new JManager();     public static void  main() {         new A().call();     }     void call() {         for (int i = 0; i < 2; i++) {             new Thread(new Runnable() {                 public void run() {                     while (true) {                         j.accumulate();                     }                 }             }).start();             new Thread(new Runnable() {                 public void run() {                     while (true) {                         j.subtract();                     }                 }             }).start();         }     } } class JManager {     private int j = 2;     public synchronized void subtract() {         j--;     }     public synchronized void accumulate() {         j++;     } }

    最新回复(0)