面試題之:設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減少1。寫出程式。
阿新 • • 發佈:2019-02-10
設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減少1。寫出程式。
* 注:因為這4個執行緒共享J,所以執行緒類要寫到內部類中。加執行緒:每次對j加一。減執行緒:每次對j減一。
public class TestThreads { private int j = 1; // 加執行緒 private class Inc implements Runnable { public void run() { for (int i = 0; i < 10; i++) { inc(); } } } // 減執行緒 private class Dec implements Runnable { public void run() { for (int i = 0; i < 10; i++) { dec(); } } } // 加1 private synchronized void inc() { j++; System.out.println(Thread.currentThread().getName() + "-inc:" + j); } // 減1 private synchronized void dec() { j--; System.out.println(Thread.currentThread().getName() + "-dec:" + j); } // 測試程式 public static void main(String[] args) { TestThreads test = new TestThreads(); // 建立兩個執行緒類 Thread thread = null; Inc inc = test.new Inc(); Dec dec = test.new Dec(); // 啟動4個執行緒 for (int i = 0; i < 2; i++) { thread = new Thread(inc); thread.start(); thread = new Thread(dec); thread.start(); } } }