「高频面试题」并发编程的特性是什么?

原子性

原子性(Atomicity)是指:在一次或者多次操作时,要么所有操作都被执行,要么所有操作都不执行。

在Java内存模型中,只保证了基本读取和赋值的原子性操作。如果想保证多个操作的原子性,需要使用synchronized关键字或者Lock相关的工具类。如果想要使int、long等类型的自增操作具有原子性,可以用java.util.concurrent.atomic包下的工具类,如:AtomicInteger、AtomicLong等。另外需要注意的是,volatile关键字不具有保证原子性的语义。

可见性

可见性(Visibility)是指:当一个线程对共享变量进行修改后,另外一个线程可以立即看到该变量修改后的最新值。

可以使用volatile、synchronized关键字和Lock相关的工具类保证可见性。

有序性

有序性(Ordering)是指:程序执行的顺序按照代码的先后顺序执行。

除了Happens-Before原则提供的天然有序性,我们还可以使用volatile、synchronized关键字和Lock相关的工具类保证有序性。

参考答案

原子性、可见性、有序性

最后,谢谢你这么帅,还给我点赞和关注。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容