执行两遍executerService.execute并没有让两个线程并发

来源:3-3 线程安全性-原子性-synchronized

冬之诗

2020-02-20

老师好,汇报一下我的实验结果。
我想试试不加synchronized的乱序效果,结果并没有乱序。哪怕我让每次打印后,线程睡1秒,仍然也不会乱序。
就是下图执行两次test1的代码。
图片描述
)

后来用paralleStream试了一下,才看到乱序的效果了。然后加上synchronized,就又不乱序了。
图片描述
所以给我的感觉,executerService.execute连续执行两遍,并不能让系统并发。不知道我这么理解对不对。

写回答

1回答

Jimin

2020-02-20

你好,我感觉你对并发和乱序理解的不ok啊,并发是同一时间可能有多个线程在同时执行,仅此而已,而且有使用共享资源才可能出现线程安全问题,与他对应的是串行(一个线程完全执行完才能执行另一个)。乱序是特定的代码在指定的场景下才可能出现。

0
2
Jimin
回复
冬之诗
哈哈,不影响,有问题可以随时提问
2020-02-21
共2条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程