软件构造 并发2

交织竞争条件
在某时刻一个运行核心只有一个线程可以运行。   进程/线程采用OS提供的时间片特征来共享处理时间。
当线程数多于处理器数量时,并发性通过时间片来模拟,处理器切换处理不同的线程。
例子:时间片(其使用是不可预知的,非确定性的,意味着线程可能随时暂停或恢复)
           三个线程T1 T2 T3可能在具有两个实际处理器的机器上进行时间分割,一个处理器运行线程T1,另一个运行线程T2,第二个处理器切换到运行线程T3.
                                                                                                                           线程T2只是暂停,直到下一个时间片在同一个处理器或另一个处理器上
          共享内存银行存储实例:在Java中,采用happened-before机制,保证了语句A内存的写 入对语句B是可见的,也就是在B开始读数据之前,A已经完成了数据 的写入。 确保内存一致性
                                                  每次运行包含竞争条件的程序时,都可能会得到不同 的行为。  

                                                  打印 调试操作很慢,通常慢100-1000倍,所有有时打印出来的并不是想要的该时间段的结果                                                

                  

原文地址:https://www.cnblogs.com/xgl122/p/9195342.html