问题标签 [java.util.concurrent]
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.
java - java中具有动态参与方数量的障碍
我想要一个在java中具有动态数量的参与者的障碍。我遇到了Phaser,但这个解决方案适用于我无法使用的 java 7。
java 6是否有一些解决方案。我应该如何满足具有可变数量服务员的障碍的需求?
java - 哪些 java.util.concurrent 类可以让我组织我的读/写?
假设我有一些想要同步访问的资源。大多数这些访问都是只读的。我想一次允许尽可能多的只读访问系统可以处理。但是,我希望能够停止阅读,进行一些写入,然后再次允许阅读。
所以读取线程可能看起来像这样
任何数量的线程都可以同时执行此操作,这不是问题。
写线程看起来像这样:
现在,我正在使用ReentrantLock
既可读取又可写入的 a 。但显然,当我宁愿它们同时工作时,这会导致读取按顺序工作。
我能做些什么来解决这个问题?
这似乎被称为读者-作者问题,wiki 条目列出了一些 C 实现,但没有用于 Java。
编辑:我对任何可以完成工作的 Java 库持开放态度。标题说 java.util.concurrent 是因为答案似乎很可能就在那儿。
java - OpenJDK 的 LinkedBlockingQueue 实现:Node 类和 GC
我对 OpenJDK 的 LinkedBlockingQueue 实现(在 java.util.concurrent 中)中的 Node 类的结构有点困惑。
我已经复制了以下节点类的描述:
具体来说,我对 next 的第二个选择感到困惑(“这个节点,意思是后继者是 head.next”)。
这似乎与 dequeue 方法直接相关,如下所示:
所以我们移除了当前的 head,我们将它的 next 设置为它自己以“帮助 GC”。
这对 GC 有什么帮助?对 GC 有多大帮助?
java - 使用 Executor 创建 ScheduledThreadPoolExecutor
我对为什么以下演员表不起作用感到非常困惑:
ScheduledThreadPoolExecutor 实现了 ScheduledExecutorService。如果我不能将它与实际类一起使用,那么这个 Executors 调用的意义何在。
我用错了吗(可能),有人可以提供一些指导吗?
java - ThreadPoolExecutor 如何中断空闲线程?
刚翻了一下源码ThreadPoolExecutor
发现一旦时间达到keepAliveTime的设定值并且allowCoreThreadTimeOut为true就会中断所有空闲的worker。
对我来说有点奇怪,它只能在 runState >= SHUTDOWN 时调用中断方法:
下面的代码来自getTask()
.ThreadPoolExecutor
这是否意味着所有空闲线程只能在 runState >= SHUTDOWN(SHUTDOWN、STOP 或 TERMINATED)时被中断?也就是说当状态为RUNNING时它们不会被中断。
java - 为消费者生产者使用 ExecutorService 和 PipedReader/PipedWriter(或 PipedInputStream/PipedOutputStream)的 Java 示例
我正在寻找一个简单的生产者 - Java 中的消费者实现,并且不想重新发明轮子
我找不到同时使用新并发包和管道类的示例
是否有同时使用PipedInputStream和新的 Java 并发包的示例?
有没有更好的方法不使用管道类来完成这样的任务?
java - 如何“取消”CountDownLatch?
我有多个消费者线程正在等待CountDownLatch
大小为 1 的await()
. 我有一个生产者线程,countDown()
它在成功完成时调用。
当没有错误时,这很有效。
但是,如果生产者检测到错误,我希望它能够向消费者线程发出错误信号。理想情况下,我可以让生产者调用类似的东西,abortCountDown()
并让所有消费者收到 InterruptedException 或其他一些异常。我不想调用countDown()
,因为这需要我的所有消费者线程在调用await()
. 我宁愿他们只收到一个他们已经知道如何处理的异常。
我知道中止设施在CountDownLatch
. 是否有另一个同步原语可以轻松适应以有效创建CountDownLatch
支持中止倒计时的同步原语?
java - Java:记录 FutureTask 异常
我有一个应用程序,它定期提交要在专用线程中执行的任务。这些任务FutureTask<V>
和线程只不过是一个无限循环,当它们进入队列时执行作业,如果为空则进入睡眠状态。
有时我需要等待计算的结果,所以我调用 FutureTask 的 get() 方法,如果发生不好的事情也会抛出异常。但是在某些情况下,我不在乎结果是什么,如果有的话,但是我需要知道(log、printStackTrace() 或其他什么...)在任务执行期间是否出现某种故障。
有什么方法可以实现这一点而不必等待我不需要的 get() ?
提前致谢!
更新:如果没有其他人等待结果,在执行任务后在运行线程上调用 get() 似乎是捕获异常的唯一方法。
另一种解决方案是扩展 FutureTask 类以提供一种方法,该方法通过 java 反射公开 sync.exception 私有字段。
java - 并发 hashmap size() 方法复杂度
我想知道size()
调用的方法是否与通常的 HashMap 方法ConcurrentHashMap
具有相同的复杂性。size()
java - Java.util.concurrent 库是否比标准 Android AsyncTask 更擅长执行任何类型的任务
我意识到您可以获得更多的自定义,但是使用并发库类是否比仅使用库存 AsyncTask 或仅创建线程并调用运行有性能(内存/速度)优势?