Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 原子整数与同步_Java_Multithreading - Fatal编程技术网

Java 原子整数与同步

Java 原子整数与同步,java,multithreading,Java,Multithreading,请告知is java.util.concurrent.atomic package是实现同步的另一个备选方案,假设有一个变量,10个不同的线程正在递增该变量,那么原子整数在同步上下文中的作用是什么 如果您只有一个整数需要递增,那么yes-AtomicInteger允许您轻松、高效、稳健地实现这一点,而无需同步 如果您需要做更多的事情,例如,如果您实际上需要更新多个变量,并且必须将这对变量作为单个单元进行更新,那么您需要使用同步。AtomicInteger保证所有线程的原子性和可见性。它比使用对变

请告知is java.util.concurrent.atomic package是实现同步的另一个备选方案,假设有一个变量,10个不同的线程正在递增该变量,那么原子整数在同步上下文中的作用是什么

如果您只有一个整数需要递增,那么yes-AtomicInteger允许您轻松、高效、稳健地实现这一点,而无需同步


如果您需要做更多的事情,例如,如果您实际上需要更新多个变量,并且必须将这对变量作为单个单元进行更新,那么您需要使用同步。

AtomicInteger保证所有线程的原子性和可见性。它比使用对变量的所有同步访问作为内存屏障的延迟更低;两者都支持比单纯的分配和访问更复杂的原子操作,例如,与volatile int不同的是递增。@oldrinb可见性从何而来?@MattBall。。。get具有读取易失性变量的记忆效果。。。set具有写入和赋值易失性变量的记忆效果。@MattBall请参阅。。。对易失性字段§8.3.1.4的写入发生在对该字段的每次后续读取之前。更正我的第一条评论:它的延迟比“是”低;强化而不是“充当”记忆屏障。