对多线程原子性的理解

  • 多线程原子性的理解:一个操作要么全部执行完毕,不会受到干扰而被中断;要么全都不执行。
  • 对于多线程中操作共享变量的操作,要保证它的原子性。
    • 在一个类中有共享变量count,开启一百个线程对其进行count++操作,每个线程对count加一百次。
    • count变量是属于共享变量,在每个线程操作它的时候,需要先把它读取到自己的工作内存中。
    • 如果说A线程读取了count,这时候cpu分配了时间片给B线程,B线程也读取到了count,并且进行了count++操作,但是还没有写会主内存。
    • 这时候cpu分配时间片给A线程,它进行count++操作,同时写会主内存,又分配给线程B,同时将操作写会主线程。
    • 这就属于线程A的操作被线程B干扰而中断,并没有确保原子性。
Tags: