Java线程面试题:设计四个线程,其中两个线程每次对 j 加 1,另外两个每次对 j 减 1,程序如下。
package thread; /** * Java线程面试题 * @author zhongfg * @date 2015-06-16 */ public class ThreadInterview2 { // 定义全局变量 private int j; public static void main(String args[]) { ThreadInterview2 tt = new ThreadInterview2(); // 调用非静态的方法 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(); } } class Inc implements Runnable { public void run() { for (int i = 0; i < 50; i++) { inc(); } } } class Dec implements Runnable { public void run() { for (int i = 0; i < 50; i++) { dec(); } } } private synchronized void inc() { j++; System.out.println(Thread.currentThread().getName() + "->增加后的值:" + j); } private synchronized void dec() { j--; System.out.println(Thread.currentThread().getName() + "->减后的值:" + j); } } 运行结果: Thread-0->增加后的值:1 Thread-0->增加后的值:2 Thread-0->增加后的值:3 Thread-0->增加后的值:4 Thread-0->增加后的值:5 Thread-0->增加后的值:6 Thread-0->增加后的值:7 Thread-0->增加后的值:8 Thread-0->增加后的值:9 Thread-0->增加后的值:10 Thread-0->增加后的值:11 Thread-0->增加后的值:12 Thread-0->增加后的值:13 Thread-0->增加后的值:14 Thread-0->增加后的值:15 Thread-0->增加后的值:16 Thread-0->增加后的值:17 Thread-0->增加后的值:18 Thread-0->增加后的值:19 Thread-0->增加后的值:20 Thread-0->增加后的值:21 Thread-0->增加后的值:22 Thread-0->增加后的值:23 Thread-0->增加后的值:24 Thread-0->增加后的值:25 Thread-0->增加后的值:26 Thread-0->增加后的值:27 Thread-0->增加后的值:28 Thread-0->增加后的值:29 Thread-0->增加后的值:30 Thread-0->增加后的值:31 Thread-0->增加后的值:32 Thread-0->增加后的值:33 Thread-0->增加后的值:34 Thread-0->增加后的值:35 Thread-0->增加后的值:36 Thread-0->增加后的值:37 Thread-0->增加后的值:38 Thread-0->增加后的值:39 Thread-0->增加后的值:40 Thread-0->增加后的值:41 Thread-0->增加后的值:42 Thread-0->增加后的值:43 Thread-0->增加后的值:44 Thread-0->增加后的值:45 Thread-0->增加后的值:46 Thread-0->增加后的值:47 Thread-0->增加后的值:48 Thread-0->增加后的值:49 Thread-0->增加后的值:50 Thread-1->减后的值:49 Thread-1->减后的值:48 Thread-1->减后的值:47 Thread-1->减后的值:46 Thread-1->减后的值:45 Thread-1->减后的值:44 Thread-1->减后的值:43 Thread-1->减后的值:42 Thread-1->减后的值:41 Thread-1->减后的值:40 Thread-1->减后的值:39 Thread-1->减后的值:38 Thread-1->减后的值:37 Thread-1->减后的值:36 Thread-1->减后的值:35 Thread-1->减后的值:34 Thread-1->减后的值:33 Thread-1->减后的值:32 Thread-1->减后的值:31 Thread-1->减后的值:30 Thread-1->减后的值:29 Thread-1->减后的值:28 Thread-1->减后的值:27 Thread-1->减后的值:26 Thread-1->减后的值:25 Thread-1->减后的值:24 Thread-1->减后的值:23 Thread-1->减后的值:22 Thread-1->减后的值:21 Thread-1->减后的值:20 Thread-1->减后的值:19 Thread-1->减后的值:18 Thread-1->减后的值:17 Thread-1->减后的值:16 Thread-1->减后的值:15 Thread-1->减后的值:14 Thread-1->减后的值:13 Thread-1->减后的值:12 Thread-1->减后的值:11 Thread-1->减后的值:10 Thread-1->减后的值:9 Thread-1->减后的值:8 Thread-1->减后的值:7 Thread-1->减后的值:6 Thread-1->减后的值:5 Thread-1->减后的值:4 Thread-1->减后的值:3 Thread-1->减后的值:2 Thread-1->减后的值:1 Thread-1->减后的值:0 Thread-3->减后的值:-1 Thread-3->减后的值:-2 Thread-3->减后的值:-3 Thread-3->减后的值:-4 Thread-3->减后的值:-5 Thread-3->减后的值:-6 Thread-3->减后的值:-7 Thread-3->减后的值:-8 Thread-3->减后的值:-9 Thread-3->减后的值:-10 Thread-3->减后的值:-11 Thread-3->减后的值:-12 Thread-3->减后的值:-13 Thread-3->减后的值:-14 Thread-3->减后的值:-15 Thread-3->减后的值:-16 Thread-3->减后的值:-17 Thread-3->减后的值:-18 Thread-3->减后的值:-19 Thread-3->减后的值:-20 Thread-3->减后的值:-21 Thread-3->减后的值:-22 Thread-3->减后的值:-23 Thread-3->减后的值:-24 Thread-3->减后的值:-25 Thread-3->减后的值:-26 Thread-3->减后的值:-27 Thread-3->减后的值:-28 Thread-3->减后的值:-29 Thread-3->减后的值:-30 Thread-3->减后的值:-31 Thread-3->减后的值:-32 Thread-3->减后的值:-33 Thread-3->减后的值:-34 Thread-3->减后的值:-35 Thread-3->减后的值:-36 Thread-3->减后的值:-37 Thread-3->减后的值:-38 Thread-3->减后的值:-39 Thread-3->减后的值:-40 Thread-3->减后的值:-41 Thread-3->减后的值:-42 Thread-3->减后的值:-43 Thread-3->减后的值:-44 Thread-3->减后的值:-45 Thread-3->减后的值:-46 Thread-3->减后的值:-47 Thread-3->减后的值:-48 Thread-3->减后的值:-49 Thread-3->减后的值:-50 Thread-2->增加后的值:-49 Thread-2->增加后的值:-48 Thread-2->增加后的值:-47 Thread-2->增加后的值:-46 Thread-2->增加后的值:-45 Thread-2->增加后的值:-44 Thread-2->增加后的值:-43 Thread-2->增加后的值:-42 Thread-2->增加后的值:-41 Thread-2->增加后的值:-40 Thread-2->增加后的值:-39 Thread-2->增加后的值:-38 Thread-2->增加后的值:-37 Thread-2->增加后的值:-36 Thread-2->增加后的值:-35 Thread-2->增加后的值:-34 Thread-2->增加后的值:-33 Thread-2->增加后的值:-32 Thread-2->增加后的值:-31 Thread-2->增加后的值:-30 Thread-2->增加后的值:-29 Thread-2->增加后的值:-28 Thread-2->增加后的值:-27 Thread-2->增加后的值:-26 Thread-2->增加后的值:-25 Thread-2->增加后的值:-24 Thread-2->增加后的值:-23 Thread-2->增加后的值:-22 Thread-2->增加后的值:-21 Thread-2->增加后的值:-20 Thread-2->增加后的值:-19 Thread-2->增加后的值:-18 Thread-2->增加后的值:-17 Thread-2->增加后的值:-16 Thread-2->增加后的值:-15 Thread-2->增加后的值:-14 Thread-2->增加后的值:-13 Thread-2->增加后的值:-12 Thread-2->增加后的值:-11 Thread-2->增加后的值:-10 Thread-2->增加后的值:-9 Thread-2->增加后的值:-8 Thread-2->增加后的值:-7 Thread-2->增加后的值:-6 Thread-2->增加后的值:-5 Thread-2->增加后的值:-4 Thread-2->增加后的值:-3 Thread-2->增加后的值:-2 Thread-2->增加后的值:-1 Thread-2->增加后的值:0