Java中的哪些操作被认为是primefaces操作?
Java中的哪些操作被认为是primefaces操作?
- 除了long和double之外的所有原始types的赋值
- 所有的参考作业
- 所有挥发性variables的分配
- java.concurrent.Atomic *类的所有操作
也许还有更多。 看看这个jls 。
正如评论中指出的那样,primefaces性并不意味着可见性。 所以,当另一个线程保证不会看到一个部分写入的int
,它可能永远不会看到新的值。
long和double的操作也是普通的64位CPU primefaces ,尽pipe没有保证。 另请参阅此function请求 。
在Java中,32位或更小数量的读写保证是primefaces的。
按照primefaces,我们的意思是每个动作都是一步完成的,不能被打断。 因此,当我们有multithreading的应用程序时,读写操作是线程安全的,不需要进行同步。
例如,下面的代码是线程安全的:
public class ThreadSafe { private int x; public void setX(int x) { this.x = x; } }
在AtomicLong.java中,基于这种方法看起来多头的分配是primefaces的:
public final void set(long newValue) { value = newValue; }
注意没有任何同步。