模型服务连接失败

什么是原子性、可见性和有序性?

并发JavaJava 并发
分类
Java 并发
难度
未设置
来源数
1
更新时间
2026/03/28 21:25

答案

+ 原子性就是一个或多个操作要么所有操作都执行,且不会受其他因素的干扰或中断,要么都不执行。在Java当中我们可以使用synchronized、各种Lock锁和原子类来保证原子性。synchronized和lock是通过加锁保证任一时刻只有一个线程能够访问资源,从而保证有序性,而原子类是通过CAS操作来保证有序性。 + 可见性就是一个线程对于共享变量的修改,其他线程是可以立即看到修改后的值的。在java中我们可以通过使用synchronized、各种lock锁和volatile来实现可见性。用volatile修饰一个变量,就指示jvm这个变量是共享且不稳定的,在每次使用该变量时,到主内存当中去读取,从而保证可见性。 + 有序性就是由于指令重排序问题的存在,代码的执行顺序不一定就是编写的顺序,我们可以通过volatile关键字,插入内存屏障来禁止指令重排序,保证有序性。

相关题目(5)

Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发

元信息

审核状态: active
关联来源: 1

来源面经题(0)

这道题目前没有手动沉淀的面经题来源。

来源(1)

Java八股(并发).md

knowledge_note
Question 30: 什么是原子性、可见性和有序性? Source answer: + 原子性就是一个或多个操作要么所有操作都执行,且不会受其他因素的干扰或中断,要么都不执行。在Java当中我们可以使用synchronized、各种Lock锁和原子类来保证原子性。synchronized和lock是通过加锁保证任一时刻只有一个线程能够访问资源,从而保证有序性,而原子类是通过CAS操作来保证有序性。 + 可见性就是一个线程对于共享变量的修改,其他线程是可以立即看到修改后的值的。在java中我们可以通过使用synchronized、各种lock锁和volatile来实现可见性。用volatile修饰一个变量,就指示jvm这个变量是共享且不稳定的,在每次使用该变量时,到主内存当中去读取,从而保证可见性。 + 有序性就是由于指令重排序问题的存在,代码的执行顺序不一定就是编写的顺序,我们可以通过volatile关键字,插入内存屏障来禁止指令重排序,保证有序性。 Reviewed answer: 原子性指操作不可被中途打断,要么全部执行要么都不执行;可见性指一个线程对共享变量的修改能被其他线程及时看到;有序性指程序执行顺序符合约束,避免错误的指令重排序。Java 可分别通过 synchronized、Lock、原子类、volatile 和内存屏障等机制保障。