问题标签 [atomicboolean]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2847 浏览

java - Android - 从线程内返回布尔值

我试图booleanrunnable. Thread我需要知道一个HTTPRequest方法是否成功。问题是我知道请求是成功的,但我总是得到false响应。



更新

根据这里的建议,我设法得到了想要的结果,但是,我不知道哪种方法更适合我的需要。有人可以推荐我的最佳用法吗?使用AsyncTaskThread + join方法。
第一种方法是按以下方式使用 AsyncTask:


第二种方法,几乎​​就像我最初发布的那样,但使​​用了 'thread.join()' 方法:

0 投票
3 回答
7009 浏览

java - Java中使用AtomicBoolean的循环调度算法

当我向外部系统发送请求时,我想实施严格的循环调度。有两个外部系统服务器。第一个请求应该发送到“System1”,第二个请求必须发送到“System2”,下一个请求必须发送到“System1”,依此类推。

由于我只有两台服务器可以向其发送请求,并且由于我希望在没有任何阻塞和上下文切换的情况下获得最大性能,因此我选择了 AtomicBoolean,因为它使用了 CAS 操作。

我的实现类

1.RoundRobinTest.java

2.RoundRobinLogic.java(带有静态AtomicBoolean对象的类)

输出:



请求 318 和 319 已发送到同一台服务器,在这种情况下 AtomicBoolean 失败。对于我的应用程序,一次可能有 1000-2000 个线程访问共享对象。从实践中的 Java 并发来看,我已经看到了以下内容。

在高争用级别上,锁定往往优于原子变量,但在更现实的争用级别上,原子变量优于锁。这是因为锁通过挂起线程来对争用做出反应,从而减少 CPU 使用率和共享内存总线上的同步流量。 低到中等的争用,原子提供更好的可扩展性;对于高争用,锁提供更好的争用避免。(基于 CAS 的算法在单 CPU 系统上也优于基于锁的算法,因为 CAS 总是在单 CPU 系统上成功,除非在读取修改写入操作中间线程被抢占的不太可能的情况。)

现在我有以下问题。

  1. 有没有其他高效的非阻塞方式,来实现轮询请求发送。
  2. 在激烈的争论下,AtomicBoolean 是否有可能失败?我的理解是,性能/吞吐量可能会由于激烈的争用而下降。但是在上面的例子中 AtomicBoolean 失败了。为什么 ?
0 投票
1 回答
367 浏览

android - 如何使android数字时钟闪烁?

我需要为我的布局实现数字时钟。我希望小时和分钟之间的点消失并每隔半秒左右重新出现一次。我复制了android时钟代码并对其进行了一些更改。这个想法是根据一些布尔值更改时间格式。但是由于某种原因,这种方法不起作用...如果您是并发大师,请帮助我!这是代码。

0 投票
3 回答
1850 浏览

java - 使用 AtomicBoolean 代替同步块

假设我有一个包含 2 个实例变量和以下方法的类(针对这个问题进行了简化):

我正在查看这段代码,在阅读了 about 之后AtomicBoolean,我认为它可能适合这里,尤其是在查看了MyClass构造函数和methodA. 不过我不太确定methodB

假设这些方法可以被多个线程调用,以下是否是线程安全的?:

running.get()保证通过running.set(true)running.set(false)从另一个线程看到更新?

0 投票
1 回答
114 浏览

scala - Scala 中的共享链表

我有许多工人演员和一个由主演员发送给工人的任务列表(链表)。链表的每个元素都有一个布尔标志,指定该元素是否已被工作人员获取。如果没有,工作人员将标志设置为已选择并开始处理该元素。当演员完成该元素时,将检查列表元素中下一个未选择的元素。工作人员将继续工作,直到列表中没有元素可以处理。我的问题是设置标志以显示选择的元素的最佳方式。我正在考虑使用 AtomicBoolean 作为标志来自动检查和设置它。但我不知道如何在 scala 中使用 AtomicBoolean。请指教

0 投票
4 回答
174 浏览

java - AtomicBoolean 的 hashCode 是什么?

我在官方文档中找不到任何信息。我知道Boolean.hashCode(boolean b)返回两个素数 1231 和 1237 表示真假。我希望在AtomicBoolean. 但是在反编译的类文件中,它似乎调用public native int hashCode();Object- 这是否意味着它将返回内存位置?

0 投票
3 回答
292 浏览

java - 仅使用 get() 和 set() 方法时,将 AtomicBoolean 替换为原始类型?

我的代码包含一些AtomicBoolean字段。仅调用这些字段的get()set()方法。

这些字段的类型可以安全地替换为原始布尔值吗?

我的意思是,原始布尔值的赋值和访问操作是 Java 中的原子操作。从这个角度来看,我看不出有任何理由AtomicBoolean在我的情况下使用。

在我的理解中,只有使用结合比较和访问的AtomicBoolean方法才有意义。compareAndSet我错了吗?你能解释一下为什么吗?

0 投票
3 回答
4011 浏览

swift - Swift 3 - 原子布尔值

有人知道如何在 iOS 10 中制作原子布尔值吗?

当前代码:

代码按预期工作,但我不断收到警告:

我无法让它与 atomic_fetch_or_explicit(memory_order_relaxed) 一起使用。

有谁知道如何将我当前的代码转换为 iOS 10,以消除此警告?

谢谢!

0 投票
1 回答
543 浏览

java - 为什么类 AtomicBoolean 默认构造函数不是初始化为 true 而是 false ?

默认构造函数什么都不做:

变量“valueOffset”表示内存中的偏移位置?我不明白为什么它被默认构造函数初始化为'false'。我怎么能理解这个?

0 投票
2 回答
101 浏览

java - 为什么 Goetz 没有在清单 7.20 中再次使用 volatile boolean?

以下是 Brian Goetz 的Java Concurrency in Practice清单 7.20 中的代码:

参考这段代码,Goetz 说“使用 AtomicBoolean 而不是 volatile 布尔值的原因是,为了从内部 Runnable 访问 hasMail 标志,它必须是最终的,这将排除修改它”(第 158 页) )。

为什么它必须是最终的?你不能把它变成一个非最终的布尔变量吗?