1.原子性
一个操作或多个操作要么全部执行完成且执行过程不被中断,要么就不执行。
2.可见性
当多个线程同时访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。
3.有序性
程序执行的顺序按照代码的先后顺序执行。
关键字volatile:保证了可见性,但不保证原子性
原子性用AtomaticInt等类
解决可见性,可用synchronized和lock,对代码段进行同步。
Thread.yield()
通俗理解:现在有很多人在排队上厕所,好不容易轮到这个人上厕所了,突然这个人说:“我要和大家来个竞赛,看谁先抢到厕所!”,然后所有的人在同一起跑线冲向厕所,有可能是别人抢到了,也有可能他自己有抢到了。我们还知道线程有个优先级的问题,那么手里有优先权的这些人就一定能抢到厕所的位置吗? 不一定的,他们只是概率上大些,也有可能没特权的抢到了。
Thread.join()
可处理多个线程有序的运行。等待该线程终止。
本文详细解释了并发编程中的三个核心概念:原子性、可见性和有序性,并介绍了如何使用关键字volatile保证可见性,以及如何利用Atomic类实现原子性操作。此外,还探讨了Thread.yield()和Thread.join()方法的作用。

496

被折叠的 条评论
为什么被折叠?



