执行两遍executerService.execute并没有让两个线程并发
来源:3-3 线程安全性-原子性-synchronized
冬之诗
2020-02-20
老师好,汇报一下我的实验结果。
我想试试不加synchronized的乱序效果,结果并没有乱序。哪怕我让每次打印后,线程睡1秒,仍然也不会乱序。
就是下图执行两次test1的代码。
)
后来用paralleStream试了一下,才看到乱序的效果了。然后加上synchronized,就又不乱序了。
所以给我的感觉,executerService.execute连续执行两遍,并不能让系统并发。不知道我这么理解对不对。
写回答
1回答
-
你好,我感觉你对并发和乱序理解的不ok啊,并发是同一时间可能有多个线程在同时执行,仅此而已,而且有使用共享资源才可能出现线程安全问题,与他对应的是串行(一个线程完全执行完才能执行另一个)。乱序是特定的代码在指定的场景下才可能出现。
022020-02-21
相似问题