Java多线程原子性是什么意思?

Java多线程会涉及原子性,什么是原子性?原子性是指一个操作要么完成,要么不完成,不能中断,Java多线程下的原子性变量不能被修改。

Java多线程原子性

Java多线程环境下的原子操作是相对访问共享变量操作而言的,原子操作是不可分割的,原子性表现为:

  • 访问(读、写)某个共享变量的操作从执行线程以外的任何线程来看,该操作要么已经执行结束要么尚未发生,其他线程不会“看到”该操作执行了部分的中间效果;
  • 访问同一组共享变量的原子操作是不能够被交错的。
  • 综上,程序的原子性指整个程序中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节;原子性操作指原子性在一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程所干扰。

    JVM内存模型中定义了八种原子操作

  • lock:将一个变量标识为被一个线程独占状态;
  • unclock:将一个变量从独占状态释放出来,释放后的变量才可以被其他线程锁定;
  • read:将一个变量的值从主内存传输到工作内存中,以便随后的load操作;
  • load:把read操作从主内存中得到的变量值放入工作内存的变量的副本中;
  • use:把工作内存中的一个变量的值传给执行引擎,每当虚拟机遇到一个使用到变量的指令时都会使用该指令;
  • assign:把一个从执行引擎接收到的值赋给工作内存中的变量,每当虚拟机遇到一个给变量赋值的指令时,都要使用该操作;
  • store:把工作内存中的一个变量的值传递给主内存,以便随后的write操作;
  • write:把store操作从工作内存中得到的变量的值写到主内存中的变量。
  • 云服务器服务器,价格很低很低,值得看看
    ①真便宜:云服务器69元1年,203元3年(全网最低价)
    ②秒杀:腾讯云服务器秒杀99元/年起
    ③618:阿里云618服务器0.9折起(2020年)