多线程操作共享变量

public class TestJava {

    public static void main(String[] args) {

        A a = new A();
        for (int i = 0; i < 3; i++) {
            T t = new T(a);
            t.start();
        }

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(a.getNum());

    }

}

class A {

    int num = 0;

    public void test() {
        for (int i = 0; i < 100000; i++) {
            num++;
        }
    }

    public int getNum() {
        return num;
    }

}

class T extends Thread {
    private A a;

    public T(A a) {
        this.a = a;
    }

    @Override
    public void run() {
        a.test();
    }
}

解决方案: Synchronized, Lock, AtomicInteger
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容