java - Java 6 上的 AtomicInteger getAndUpdate 为零

标签 java java-6 atomicinteger

我正在尝试使用计数器来检测通过 HTTP 方法发送的文本中的唯一单词数。由于我需要确保该计数器的值的并发性,因此我已将其更改为 AtomicInteger

在某些情况下,我想获取计数器的当前值并将其重置为零。如果我理解正确的话,我绝对不能像这样单独使用 get()set(0) 方法,而是使用 getAndUpdate() 方法,BUT!我不知道如何实现此重置的 IntUnaryOperator 以及是否可以在 Java 6 服务器上执行此操作。

谢谢。

public class Server {

  static AtomicInteger counter = new AtomicInteger(0);

  static class implements HttpHandler {

    @Override
    public void handle(HttpExchange spojeni) throws IOException {
      counter.getAndUpdate(???); 
    }
  }
}

最佳答案

getAndUpdate() 基本上适用于当您想要基于涉及前一个值的某些操作(例如,将值加倍)来设置值时。如果您想要更新的值始终为零,那么 getAndSet() 是更明显的选择。 getAndSet() 操作在 Java 6 中可用,因此可以在此处解决您的问题。

由于在 Java 8 之前没有可用的基于巴的原子更新操作,如果您想实现类似的操作,您要么需要处理自己的同步,要么使用 compareAndSet()方法,可能会重试直到成功。

关于java - Java 6 上的 AtomicInteger getAndUpdate 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44184339/

相关文章:

java - 如何更好地处理耗时/CPU 密集型查询?

java - 检查 JList 是否具有特定值

Java:修改更改哈希码的id

java - 没有管理员权限如何安装jdk 1.6?

java - 像npm一样方便的升级java版本的方法

java - 所有线程的compareAndSet 都会失败吗?

java - AtomicInteger 如何是线程安全的

java - 如何在不多次调用 .getJSONObject(key) 的情况下检查 JSONObject 中是否存在属性?

regex - 如何在没有 Java 7 的情况下匹配正则表达式字符串中大于\uFFFF 的 Unicode 代码点?

java - 原子整数计数器打印顺序错误