blockingqueue相关内容

如何阻塞直到BlockingQueue为空?

我正在寻找一种阻止方式,直到 BlockingQueue 为空。 我知道,在多线程环境中,只要有生产者将项目放入 BlockingQueue ,就可能出现队列变空并且在几纳秒后队列中充满项目的情况。 但是,如果只有一个 生产者,那么它可能要等待(并阻塞)直到队列停止后为空。将项放入队列。 Java /伪代码: / /生产者代码 BlockingQueue queue = ..
发布时间:2020-10-07 20:50:06 Java开发

如何并行等待多个阻塞队列?

我有两个单独的阻止队列。客户通常使用第二个阻塞队列中的第一个来检索要处理的元素。 在某些情况下,客户对两个阻塞队列中的元素感兴趣, 客户端如何并行等待两个队列? 解决方案 您可以尝试使用 投票 方法在某种循环中仅等待指定数量的 除此之外,我想说的是在单独的线程上为每个队列运行阻塞操作,并为您的服务器提供回调接口主要应用是另一个稍微复杂一些的选项。 ..
发布时间:2020-10-07 20:32:00 Java开发

使用where表达式从队列出队

我有一个基于 Marc Gravell的 现在,我遇到了只想让某个对象出队的情况,我知道这实际上并不是队列的用例,但是在某些情况下,我认为这是一个很好的扩展,例如等待某个网络答案 这类似于 TryDequeueWhere(Func expression, out T value, int? waitTimeInMs = null) 问题是我不知道如何等待和阻止某个 ..
发布时间:2020-05-14 02:19:34 C#/.NET

如果当前线程处于休眠状态,ThreadPoolExecutor是否会产生新线程

此问题是对这个问题. 本质上,我正在做的是声明只有一个线程的ThreadPoolExecutor.我重写了beforeExecute()方法以使自己进入睡眠状态,以便我的每个任务之间的执行都有一定的延迟.基本上,这是为了将CPU分配给其他线程,因为我的线程有点不正常. 所以预期的行为是: 对于ThreadPoolExecutor中的每个新任务,它都会在执行任务之前调用before ..
发布时间:2020-05-14 01:34:02 Java开发

ThreadPoolExecutor-ArrayBlockingQueue ...在从队列中删除元素之前要等待

我正在尝试调整执行以下操作的线程: 只有1个线程[CorePoolSize =0, maxPoolSize = 1] 的线程池 使用的队列是 Quesize = 20 背景: 线程尝试读取请求并对其执行操作. 但是,最终,请求的增加如此之多,以至于线程一直很忙,并消耗了1个CPU,这使它成为了资源消耗. 我想做的是,不定期采样请求并进行处理.其他请求可以安全地忽略. ..

Java:线程生产者使用者等待数据产生的最有效方法是什么

在使用BlockingQueue消费生成的数据时,等待数据出现的最有效方法是什么? 场景: 第1步):数据列表将是添加了时间戳记的数据存储.要求这些时间戳按最接近当前时间优先级的顺序进行排序.此列表可能为空.一个线程将在其中插入时间戳. 生产 步骤2)我想在另一个线程中使用这里的数据,该线程将从数据中获取时间戳,并检查它们是否在当前时间之后. 消费者,然后生产 第3步)(如 ..

在Java中实现自己的阻塞队列

我知道这个问题以前已经被问过很多次,但是我只是想不通互联网上的例子,例如这两种解决方案都在put()方法中检查阻塞队列的数组/队列/链表是否为notifyAll等待线程,反之亦然.第二个链接中的评论强调了这种情况,并指出这是不必要的. 问题是;检查队列是否为空对我来说似乎也有些奇怪.通知所有正在等待的线程.有什么想法吗? 谢谢. 解决方案 到目前为止,我知道这是一个老问题,但是 ..

java BlockingQueue没有阻塞偷看?

我有一个阻塞对象队列。 我想编写一个阻塞的线程,直到队列中有一个对象为止。类似于BlockingQueue.take()提供的功能。 但是,由于我不知道我是否能够成功处理对象,我想偷看()而不是删除对象。我只想在能够成功处理它的情况下删除该对象。 所以,我想要一个阻塞的peek()函数。目前,peek()只是在队列为空时根据javadoc返回。 我错过了什么吗?还有其他方法 ..
发布时间:2018-12-28 16:31:31 Java开发

ArrayBlockingQueue和LinkedBlockingQueue之间有什么区别

使用ArrayBlockingQueue更好的情况是什么?使用LinkedBlockingQueue什么时候更好? 如果LinkedBlockingQueue默认容量等于MAX Integer,将它用作具有默认容量的BlockingQueue真的很有帮助吗? 解决方案 ArrayBlockingQueue 支持一个大小在创建后永远不会改变的数组。将容量设置为 Integer.MAX_VA ..
发布时间:2018-12-25 20:21:19 Java开发

使用LinkedBlockingQueue的ExecutorService与ThreadPoolExecutor

我正在开发一个多线程项目,我需要生成多个线程来测量客户端代码的端到端性能,因为我正在进行负载和性能测试。所以我创建了下面的代码,它使用 ExecutorService 。 下面的代码是 ExecutorService : public class MultithreadingExample { public static void main( String [] args)抛出 ..

阻塞队列和多线程消费者,如何知道何时停止

我有一个单线程生成器,它创建了一些任务对象,然后将它们添加到 ArrayBlockingQueue (具有固定大小)。 我还启动了一个多线程消费者。这是一个固定的线程池( Executors.newFixedThreadPool(threadCount); )。然后我向这个threadPool提交了一些ConsumerWorker入口,每个ConsumerWorker都对上面提到的Array ..
发布时间:2018-11-29 20:02:13 Java开发