java线程不安全问题_求JAVA多线程高手解答,一个关于验证Java多线程不安全的代码问题,困扰我好几天了,...

这是要测试的线程不安全的类

6c1555302777729326ca3efa0910d9ec.png

正常情况下,使用下面线程池测试上面的代码,结果并不是100,也就是说明线程不安全

6c1555302777729326ca3efa0910d9ec.png

但使用下面的这个代码,结果总是100,也就是线程安全,但明明是不安全的呀

6c1555302777729326ca3efa0910d9ec.png

public static void main(String[] args) throws InterruptedException {

El el = new El();

final int threadSize = 100;

final CountDownLatch countDownLatch = new CountDownLatch(threadSize);

ExecutorService executorService = Executors.newCachedThreadPool();

for (int i = 0; i < threadSize; i++) {

executorService.execute(() -> {

el.add();

countDownLatch.countDown();

});

}

Thread.sleep(100);

System.out.println(el.get());

//另一个测试代码

Runnable r = new Runnable() {

@Override

public void run() {

el.add();

}

};

Thread threads[]=new Thread[100];

for (int i = 0; i < 100; i++) {

threads[i] = new Thread(r," " + i);

}

for (int i = 0; i < 100; i++) {

threads[i].start();

}

Thread.sleep(1000);

System.out.println(el.get());

}

EL类

public class El {

public int count = 0;

public void add() {

count += 1;

}

public int get() {

return count;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值