并发程序具有以下三大特性:
可见性:
当一个线程修改了共享变量的值后,其他线程能够立即看到这个修改。这是通过将变量修改后的值同步回主存,并在变量被读取之前从主存中刷新变量的值来实现的。
有序性:
程序执行的顺序按照代码的先后顺序执行。但由于JVM中存在指令重排,可能会导致实际执行顺序与代码顺序不一致。为了保证有序性,可以使用`volatile`关键字或`synchronized`关键字来禁止指令重排序。
原子性:
一个操作是不可被中断的,要么全部执行成功,要么全部不执行。在并发编程中,原子性是保证多个线程同时操作共享资源时,每个线程的操作都是不可分割的。为了保证原子性,可以使用锁机制,如`synchronized`关键字或`Lock`接口。
这些特性是并发编程中需要重点关注的问题,合理地处理这些特性可以避免很多并发引发的问题。