jjzjj

AtomicBoolean

全部标签

java - 如何测试 AtomicBoolean 的原子性?

我正在为AtomicInteger和AtomicBoolean编写单元测试。它们将用作引用测试,用于测试objective-c中这些类的仿真,用于翻译项目。我认为AtomicInteger测试效果很好,基本上是通过在大量for循环中执行可预测数量的递增、递减、加减操作,每个循环都在自己的线程中运行(每个操作类型有许多线程)。实际操作使用CountDownLatch同时开始。当所有线程都完成后,我根据线程数、每个线程的迭代次数和每次迭代的预期增加/减少,通过将原子整数与预期整数值进行比较来断言。该测试通过。但是如何测试AtomicBoolean?基本操作是get和set,因此在多个线程中

java - 防止在多线程上下文中使用非线程安全方法

当用户试图在多线程上下文中使用类的非线程安全方法时,有没有办法抛出异常?我想这个问题主要是为了检测多个线程正在尝试使用该方法。或者,我可以在函数声明中使用“not_synchronous”关键字/标签吗? 最佳答案 您可以在允许线程运行之前检查该方法是否已在使用-但这与使用锁并没有太大区别(注意:我的示例不是可重入的):privatestaticfinalAtomicBooleanused=newAtomicBoolean();publicstaticvoidunsafe()throwsInterruptedException{if

java - 这是 "better"。 AtomicIntegerArray(1/0 为真/假)与 AtomicBoolean[]?

我对此很好奇。如果使用值为0和1的AtomicIntegerArray,则可以完成与AtomicBoolean数组相同的操作。示例:finalAtomicIntegerArrayarray1=newAtomicIntegerArray(10);array1.compareAndSet(3,0,1);//0=falseand1=true//exactlythesamethingof:finalAtomicBoolean[]array2=newAtomicBoolean[10];for(inti=0;i你认为哪个更快更好? 最佳答案 W

java - 为什么 java.util.concurrent.atomic.AtomicBoolean 在内部用 int 实现?

AtomicBoolean将其值存储在:privatevolatileintvalue;然后,例如,提取它的值是这样完成的:publicfinalbooleanget(){returnvalue!=0;}这背后的原因是什么?为什么没有使用boolean? 最佳答案 AFAIK,int是可以跨不同机器类型实现的最小类型CAS操作。注意:由于对象分配是8字节对齐的,因此使用较小的类型不会节省任何内存。 关于java-为什么java.util.concurrent.atomic.AtomicB

java - 为什么 java.util.concurrent.atomic.AtomicBoolean 在内部用 int 实现?

AtomicBoolean将其值存储在:privatevolatileintvalue;然后,例如,提取它的值是这样完成的:publicfinalbooleanget(){returnvalue!=0;}这背后的原因是什么?为什么没有使用boolean? 最佳答案 AFAIK,int是可以跨不同机器类型实现的最小类型CAS操作。注意:由于对象分配是8字节对齐的,因此使用较小的类型不会节省任何内存。 关于java-为什么java.util.concurrent.atomic.AtomicB

java - 什么时候最好在 Java 中使用 volatile boolean 而不是 AtomicBoolean?

这个问题在这里已经有了答案:VolatilebooleanvsAtomicBoolean(12个回答)关闭3年前。我查看了SO中的其他volatile与Atomicxxxx问题(包括thisone)并阅读了thedescriptionofjava.util.current.atomic,我对细微差别不太满意。如果我尝试在使用volatileboolean和AtomicBoolean之间做出决定,除了AtomicBoolean提供的原子读取-修改-写入操作之外,是否还有实际区别?(例如compareAndSet()和getAndSet())假设我有volatilebooleanflag;

java - 什么时候最好在 Java 中使用 volatile boolean 而不是 AtomicBoolean?

这个问题在这里已经有了答案:VolatilebooleanvsAtomicBoolean(12个回答)关闭3年前。我查看了SO中的其他volatile与Atomicxxxx问题(包括thisone)并阅读了thedescriptionofjava.util.current.atomic,我对细微差别不太满意。如果我尝试在使用volatileboolean和AtomicBoolean之间做出决定,除了AtomicBoolean提供的原子读取-修改-写入操作之外,是否还有实际区别?(例如compareAndSet()和getAndSet())假设我有volatilebooleanflag;

java - AtomicBoolean 中 getAndSet 和 compareAndSet 的区别

线程标题应该是不言自明的......我对AtomicBoolean类的以下方法的规范有点困惑:java.util.concurrent.atomic.AtomicBoolean#compareAndSetjava.util.concurrent.atomic.AtomicBoolean#getAndSet我的假设是,当在if条件中用作boolean子句时,两者会导致相同的行为:publicclassTest{privateAtomicBooleanflag=AtomicBoolean(false);publicvoidprocessSomeAction(){if(flag.getAnd

java - 如何使用 AtomicBoolean 阻塞和等待

我正在寻找一种暂停线程的方法。我开始使用一个boolean标志(称为“暂停”),并用一个while循环(暂停)包装一个检查。在while循环中有一个Thread.wait()来阻止执行。我一直在研究AtomicBoolean,除了不阻塞外,它似乎可以解决问题。是否有具有block方法的AtomicBoolean的替代或扩展版本?即类似于AtomoicBoolean.get(false)的AtomicBoolean.getFalse()?他们有一个阻塞队列,所以有一个阻塞值。当前设置是:while(paused.get()){synchronized(paused){try{paused

java - AtomicBoolean 没有 negate() 方法吗?

java.util.concurrent.atomic.AtomicBoolean是否没有可以自动取反/反转值的方法?我可以换一种方式吗?我错过了什么吗? 最佳答案 有点老了……但是真的觉得答案不是很好。如果说这在硬件中不常见或仅有用,我会完全不同意。您可能希望多个线程以相同的可能性切换单个变量......我使用AtomicLong来制作一个假boolean值。这是从JMSMessageListener中采用的,我需要一半时间响应特定消息,另一半时间响应另一种类型。publicclassMock{privatestaticAtomi
12