cost 324 ms
即使 LinkedBlockingQueue 为空,线程也会阻塞 - Thread blocking even when LinkedBlockingQueue is empty

为了进行清楚的调查,我只有一个线程生成一个实体,一个线程使用它。 这两部分共享LinkedBlockingQueue。 在使用实体后,线程将其转发给其他线程以将实体保存在数据库中。 在通过队列插入和删除实体的几次迭代后,生产线程停止工作。 调试日志显示它就像队列阻塞插入操作一样,即使队列为空或有足够 ...

Striped ReadWriteLock 抛出 IllegalMonitorStateException - 尝试解锁读锁,未被当前线程锁定 - Striped ReadWriteLock throwing IllegalMonitorStateException - Attempt to unlock read lock, not locked by current thread

我们正在编写一个并发多图来为多线程应用程序中的同一个键存储多个值。 我们扩展了 Guava ForwardingMultimap 来做同样的事情。 Put 和 remove 方法获取一个键的写锁并在最后释放它。 类似地获取键的读锁并在最后释放它。 我已经通过在本地系统中使用多个线程对此进行了测试, ...

CompletableFuture 控制方式异常中止 - CompletableFuture controlled way abort on exception

假设我有一个CompletableFuture ,其中有几个链接的阶段: 假设如果<stage1>中发生错误,我们希望中止<stage2>的执行并返回SOME_DEFAULT_VALUE 。 给定以下选项: 选项 A是中止链式执行阶段的正确方法吗? 在选项 B中,有什么方法可 ...

使用 Java 的 ReadWriteLocks 实现多线程 web 爬虫 - Implementing a multi-threaded web crawler with Java's ReadWriteLocks

我正在尝试使用 ReadWriteLocks 实现多线程 web 爬虫。 我有一个调用 API 的 Callable 来获取页面 URL 并在它们不存在于已见 URL 集中时抓取它们。 从 ExecutorService 我使用三个线程进行爬网。 问题是 - 不同的线程正在读取相同的 URL 两次。 ...

为什么 Semaphore 实现使用 CAS (U.compareAndSetInt) 而不是等待/通知? - Why the Semaphore implementation uses CAS (U.compareAndSetInt) instead of wait/notify?

我决定从头开始实现并发 package 的一些类,并通过等待/通知实现信号量。 这样做似乎非常容易和直观。 当我检查构建实现时,我看到他们使用 CAS(比较和交换)技术使这一切变得复杂。 他们为 ReentranceLock 实现做了同样的事情。 为什么他们决定这样做? 是因为性能吗? 也许我也应 ...

Java ConcurrentModificationException 用于从多线程写入数组列表 - Java ConcurrentModificationException for writing to array list from multiple thread

在 java 我有以下项目 class 我正在从引发并发异常错误的多个线程访问此 class 的列表元素。 它与 CopyOnWriteArrayList 完美配合,但在实际场景中,列表正在从多个位置多次编辑,因此 CopyOnWriteArrayList 对我来说不是一个好的选择。 我也不能使用迭 ...

异常时向 executorService 重新提交 Callable - Resubmit Callable to executorService on exception

我的情况 我正在尝试制作一个功能,该功能将对给定端点执行 n(其中 n >=0)请求,但我确实理解有时该端点可能由于 500 错误或其他问题而无法响应,所以我想重复我的对端点的请求(在[尚未实现]之间有一个小间隔)直到我得到响应,或者直到我得到一个未知的错误,这表明我不能重复,因为除了崩溃的服 ...

等待 ScheduledExecutorService 中的所有作业完成,同时允许添加新作业 - wait for all jobs in a ScheduledExecutorService to finish, while allowing new jobs to be added

我正在使用ScheduledExecutorService跨多个线程调度和处理作业。 在我的应用程序中,一个作业可以安排一个新作业(在同一个ScheduledExecutorService上),作为某种后续操作。 在主线程中,我想等到所有作业都完成后,作为同步点。 有shutdown()和awai ...

如何在 Java 中独立运行 Timer? - How to run Timer independently in Java?

我正在尝试为每个计时器构建多个Timers并安排独立的任务。 我有一个用于保存Timer及其变量的构造函数。 然后,我将它们一一调用,但我发现传递给Timer构造函数的变量被彼此覆盖。 我已经将每个Timer作为新实例启动,但仍然无法解决问题。 如何确保计时器独立运行? 代码: 要触发计时器: ...

具有背压的 ExecutorService - ExecutorService with backpressure

我对ExecutorService有以下要求: 有限数量的并发处理任务(线程),最好是可配置的 当所有线程都被占用时,随后提交的任务就会排队。 队列应该应用背压:如果提交的任务太多并且队列已满,则提交应该阻塞。 阻塞提交可以有一个超时:如果一个任务在给定时间内没有提交,应该抛出一个异 ...

Java并发:试图识别我的乘客来自哪个航班 - Java Concurrent: trying to identify my passengers are from which flight

我试图在我的项目中弄清楚乘客的下船和登船方法。 问题是乘客的数量不会按顺序排列,我无法弄清楚哪些航班正在进行那些下机和登机操作。 目的:想办法为旅客添加航班号。 下面是我的乘客舱 飞机等级,如果有任何顾虑 ...

Mule Distributed Locking for Dynamic locks 如何在内存中跨多个 worker 管理和释放 - How Mule Distributed Locking for Dynamic locks are managed and released in memory across multiple workers

我正在创建锁,但锁的名称是动态的。 给定的 businessCaseId 可能有许多消息,因此将创建许多锁。 我可以知道lock.unlock()之后锁定对象会发生什么吗? (是的,锁被释放了)它是从内存中删除/有资格进行 GC 还是留在内存中还是什么? 我应该设置为 null 吗? loc ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM