1. 程式人生 > >面試題之:設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減少1。寫出程式。

面試題之:設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減少1。寫出程式。

設計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();
		}
	}

}