java.util.concurrent相关内容

同步与锁定

java.util.concurrent API 提供了一个名为 Lock 的类,它基本上将序列化控件以访问关键资源.它提供了诸如 park() 和 unpark() 等方法. 如果我们可以使用 synchronized 关键字并使用 wait() 和 notify() notifyAll() 方法,我们可以做类似的事情. 我想知道其中哪一个在实践中更好,为什么? 解决方案 如 ..
发布时间:2021-11-25 16:03:19 Java Web开发

为什么 Java Future.get(timeout) 不可靠?

Future.get(timeout) 在给定的超时后不会可靠地抛出 TimeoutException.这是正常行为还是我可以做些什么来使其更可靠?这个测试在我的机器上失败了.但是,如果我睡 3000 次而不是 2000 次,它就会过去. public class FutureTimeoutTest {@测试public void test() 抛出执行异常,中断异常{ExecutorServi ..
发布时间:2021-09-07 20:10:45 其他开发

使用ConcurrentHashSet时的线程安全引用分配

对于在DTO中使用ConcurrentHashSet感到有些困惑.一次有多个线程可以访问此DTO. 首例 公共类LogDTO {私人Set人= ConcurrentHashMap.newKeySet();公共无效setPerson(Set人){this.person =人;}公共SetgetPerson(){返回this.person; ..
发布时间:2021-05-19 18:30:20 其他开发

以固定的速率安排可呼叫对象

我有一个要以固定速度运行的任务.但是,每次执行后,我还需要任务的结果.这是我尝试过的: 任务 class ScheduledWork实现了Callable.{公共字符串call(){//执行任务并以字符串形式返回结果}} 否,我尝试使用 ScheduledExecutorService 进行计划.事实证明,您不能以固定的速率安排 Callable ,只能执行 Run ..
发布时间:2021-05-18 20:03:30 其他开发

Thread :: yield vs Thread :: onSpinWait

标题基本上说明了所有内容,还有我真的很想知道何时使用它们的少量补充.这可能很简单-我已经阅读了它们的文档,但仍然不能说出太多区别. 这里有这这样的答案,基本上都是这样: 屈服对于忙碌的等待也很有用... 我不同意它们,原因很简单,因为 ForkJoinPool 在内部使用 Thread :: yield ,而这是jdk世界中的一个很新的功能. 真正困扰我的是jdk中的用法( ..
发布时间:2021-04-23 20:36:06 其他开发

我们是否需要使ConcurrentHashMap易变?

我们有一个共享的 ConcurrentHashMap ,它由2个线程读写. class测试{私有ConcurrentHashMapmap = new ConcurrentHashMap();对象read(){返回map.get(object);}void write(Object key,Object object){map.put(key,object); ..
发布时间:2021-04-23 20:35:50 其他开发

确保连续的项目顺序的PriorityBlockingQueue

我正在接收一系列消息,我想按它们的顺序处理它们.每个消息都有一个序列号.有一个线程池接收它们.我想将它们放入 PriorityBlockingQueue 之类的阻塞队列中,并以正确的顺序读取它们,阻塞直到下一条连续消息可用为止. 例如给出以下代码: ConsecutiveBlockingQueueq =新的ConsecutiveBlockingQueue();新线 ..
发布时间:2021-04-02 20:29:04 其他开发

不同线程中的并发(ReentrantLock)

我需要在不同的线程中使用ReentrantLock.有可能吗? P.S.在secondMethod中,"lock.unlock()"抛出IllegalMonitorStateException. public class SomeClass { private static ConcurrentHashMap hashMap = new Concurr ..
发布时间:2021-02-10 18:31:28 其他开发

Java ForkJoinPool的compute()方法中的同步

在Java中:我们阅读的完整参考资料: 通常,ForkJoinTask不应使用同步方法或 同步代码块.另外,您通常不希望拥有 compute()方法使用其他类型的同步,例如 信号量 为什么要避免在compute()中进行同步? 在某些情况下是否仍可以使用同步,例如信号量或已同步? 我应该从java.util.concurrent使用什么其他方法来拥有如ForkJoinTask和同步中可 ..
发布时间:2021-02-10 18:31:25 其他开发

如何处理来自CompletableFuture.runAsync的未捕获异常

我们的应用程序包含一些异步运行的代码,但失败了.像这样: CompletableFuture.runAsync( () -> { throw new RuntimeException("bad"); }, executorService ); 我们希望使用默认的异常处理代码来捕获这些错误,以防万一特定用途忘记处理异常(这是由生产错误引起的). 这显然很棘手. 处理J ..
发布时间:2021-02-10 18:31:19 其他开发

使用执行程序创建ScheduledThreadPoolExecutor

我对于为什么以下强制转换不起作用感到非常困惑: ScheduledThreadPoolExecutor timeoutControl = (ScheduledThreadPoolExecutor) Executors.newSingleThreadScheduledExecutor(); ScheduledThreadPoolExecutor实现ScheduledExecutorServ ..
发布时间:2021-02-10 18:31:16 其他开发

为什么java.util.concurrent.FutureTask无法序列化

我当前正在使用Apache Wicket.我有一些REST调用,每个调用需要几秒钟. Wicket只允许ajax同步调用,因此我试图使用Future和Callable. 这是我课程的一部分: public abstract class GetPrices extends AbstractAjaxTimerBehavior { private static final l ..
发布时间:2021-02-10 18:31:13 其他开发

如果取消时正在运行runnable,如何取消ShceduledFuture并等待runnable停止?

当在任何ScheduledExecutorService上以固定速率调度任何命令时,它返回ScheduledFuture,也可以将其取消. 但是“取消"不能保证取消返回后命令仍未执行,例如,因为调用“取消"时命令已经在执行中间. 对于大多数用例来说,它已经足够了.但是我需要在取消后阻塞当前线程的情况下处理用例,如果命令已经在执行中,请等到命令完成.换句话说,如果命令仍在执行,则称为“取消"的 ..
发布时间:2021-02-10 18:31:10 其他开发

从AtomicLongArray获取数组

我想使用Java 1.6和AtomicLongArray将原始的AtomicLongArray复制到一个新的AtomicLongArray中.有一个构造函数需要一个数组(AtomicLongArray(long [])),所以我想我可以从原始数组中获取该数组并将其提供给构造函数. 遗憾的是,AtomicLongArray中的实际long []是私有的,似乎没有吸气剂.有什么方法可以做到,这意 ..
发布时间:2021-02-10 18:31:07 其他开发

Java:如何获取ConcurrentHashMap的静态快照?

Java文档表示,映射支持方法values()和entrySet()的返回值.因此,对地图的更改会反映在集合中,反之亦然.我不希望这种情况发生在我的静态副本上.本质上,我希望在DS上完成许多并发操作.但是对于某些情况,我想遍历其静态快照.我想遍历静态快照,因为我假设与同时更新的版本相比,遍历静态快照会更快. 解决方案 简单地制作一份副本,新的HashMap将与原始副本无关. Set ..
发布时间:2021-02-10 18:31:04 其他开发

Java 8中的异步方法及其后并行执行的方法

花了一天的时间学习有关Java并发API的知识之后,我仍然不太了解如何借助CompletableFuture和ExecutorService类来创建以下功能: 当我在REST端点上收到请求时,我需要: 启动一个异步任务(包括数据库查询,过滤等),这将在末尾给我一个字符串URL列表 与此同时,用HTTP OK响应REST调用者,该请求已收到,我正在处理它 异步任务完成后,我需要将HT ..
发布时间:2021-02-10 18:31:01 其他开发

ReentrantReadWriteLock中的读写锁是否以某种方式相关?

请向我解释更多合同.我不知道ReentrantReadWriteLock中包含的两个锁是否以某种方式相关?还是这些只是两个普通锁的捆绑? 解决方案 如果线程正在等待读锁,则共享该锁,但是当线程想要获取写锁时,仅允许该线程进行互斥访问. 因此允许任何一种操作.if lock is held by readers and thread request write lock no more ..
发布时间:2021-02-10 18:30:54 其他开发