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

 

posted @ 2014-02-27 20:09  Self_improve  阅读(498)  评论(0编辑  收藏  举报