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
多线程操作共享变量
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 前言 学习InheritableThreadLocal之前,需要对ThreadLocal有一定了解,回顾:Thre...