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