KeleQAQ 2020-09-28 17:22 采纳率: 0%
浏览 68

线程A加1,线程B减1,为什么a都是输出0?

 * 存在实例变量a=0
 * 线程A对a加1
 * 线程B对a减1
 * 
 * 求最终a的值

 */


为什么没有出现输出1   0之类的结果。比如线程A先判断,然后加1并输出a=1,线程B后判断(此时a=1),对a减1,输出a=0。

然后可不可以是 1   -1

<br>



```/*
 * 存在实例变量a=0
 * 线程A对a加1
 * 线程B对a减1
 * 
 * 求最终a的值

 */

class ThreadCalculate implements Runnable {
    private int a = 0;

    @Override
    public void run() {
        method1();
    }


    public void method1() {
        if (Thread.currentThread().getName().equals("A")) {
            a += 1;

        } else if (Thread.currentThread().getName().equals("B")) {

            a -= 1;

        } else {
            System.out.println(Thread.currentThread().getName());
        }

        System.out.println("最终 a=" + a);
    }

}

public class 线程同步案例 {

    public static void main(String[] args) {
        ThreadCalculate calculate = new ThreadCalculate();
        Thread t1 = new Thread(calculate, "A");
        Thread t2 = new Thread(calculate, "B");
        t1.start();
        t2.start();
    }

}

输出结果:
最终 a=0
最终 a=0

  • 写回答

2条回答 默认 最新

  • zqbnqsdsmd 2020-09-29 13:10
    关注
    评论

报告相同问题?