并发编程的三大特性

原子性

  • 狭义上指的是CPU操作指令必须是原子操作
  • 广义上指的是字节码指令是原子操作
  • 保证原子性?
    • 加锁(Synchronize、Lock)

有序性

  • 狭义上指的是CPU操作指令是有序执行的
  • 广义上指的是字节码指令是有序执行的
  • 指令重排序(JIT即时编译器的优化策略)
    • happed-before六大原则
    • 两行代码之后的操作,执行结果不存在影响,就可以发生指令重排序(JMM)

可见性

  • 在多核时代,内存的可见性是一个很常见的并发问题。
  • 并发编程的三大特性