【Java 阻塞队列】教程文章相关的互联网学习教程文章

java中的基本队列

这是java中最基本的队列.我只需要入队和出列操作.我的申请不是并发的.我发现很多令人困惑的队列名称here.解决方法:java.util.LinkedList是最简单的. java.util.ArrayDeque是最快的. 尽管它不适用于您,但java.util.concurrent.ConcurrentLinkedQueue是最具防弹性的,因为您可以让多个线程同时与它进行通信,而无需担心.

Java中的所有队列都是线程安全的吗?

Java中存在许多队列实现,如LinkedList,BlockingQueues.它们都是线程安全的吗?如果您的答案是否定,哪些实现支持并发访问,哪些实现了最佳性能? 注意:我正在使用JDK 1.6.解决方法:大多数标准集合都不是线程安全的.您在阅读API文档时可以找到此信息. 例如LinkedList的文档:If multiple threads access a linked list concurrently, and at least one of the threads modifies the list structurally, it must be synchronized exte...

Java中的优先级队列【代码】

你有2个参数吗?例如,我想将一个字符串和一个相应的整数添加到优先级键.然后我将按整数排序.我知道如何添加字符串或整数,但我不知道如何添加它们.有人可以指出我正确的方向,让我知道我是否正确的方式?解决方法:有两种方法可以做到这一点.无论哪种方式,您都希望创建一个自定义对象,该对象同时包含String(您想要的值)和整数(优先级). 第一个解决方案是让这个数据对象实现Comparable:class Data implements Comparable<Data> {priva...

java – 并发:如何使用传入和传出队列实现执行程序?【代码】

众所周知,ThreadPoolExecutor使用一些BlockingQueue作为传入任务的队列.我想要的是让ThreadPoolExecutor为任务结果准备好第二个队列.我想将此队列用作发送或存储这些结果的输入/输出服务的源. 为什么我要创建一个单独的队列?因为我想要将结果的发送与获取结果的动作分开.另外,我认为伴随输入/输出操作的任何异常和延迟都不应该影响我正在计算结果的ThreadPoolExecutor. 我已经创建了一些天真的实现.我想对此提出一些批评.可能是,它...

java – 具有“消息屏障”功能的消息队列?

是否有消息队列实现允许通过在消息流中插入“消息障碍”将工作分解为“批处理”?让我澄清一下.消息屏障之后的任何消息都不应传递给队列的任何使用者,直到屏障之前的所有消息都被消耗.有点像同步点.如果所有消费者在到达障碍时收到通知,我也会更喜欢. 有什么像这样的吗?解决方法:我不知道现有的,广泛可用的实现,但如果你允许我,我会提出一个使用代理的非常简单的通用实现,其中: > producer生成器写入代理队列/主题>代理转发到原始...

java基础-数据结构-栈与队列【图】

1.栈的相关概念 栈是一种有着特殊操作规则的数据结构——后进先出(LIFO,Last In First Out),这也是栈的最重要的一个特点。栈又叫做堆栈(Stack),这里说明一下不要讲堆栈和堆(Heap)的概念混淆,事实上栈和堆是两个不同的概念,后面的文章会介绍堆。一般来讲,栈有两个操作:一个是进栈(Push),也叫压栈或入栈,另一个是出栈(Pop)或叫弹栈、退栈。 2.栈的存储结构 栈一般使用一段连续的空间进行存储,通常预先分配一个长...

java – 如何以编程方式创建和暂停Google App Engine任务队列

我正在使用Google App Engine,并且我一直在使用命名推送队列来处理某些任务.使用queue.xml定义和配置队列.没关系. 现在我想做更多: 1)有没有办法在“动态”动态创建和配置Java中的新队列? 2)此外,一旦我有一个队列(如果可能的话,通过queue.xml或1),有没有办法在Java中暂停和恢复队列(就像你可以使用管理控制台按钮一样)? 谢谢!解决方法:1)因为它必须在queue.xml中并随你的应用程序一起上传,所以我想不出办法.如here所述:“应用...

java – 如何避免在ActiveMQ检查点调用后阻止队列浏览【代码】

使用具有大量持久性队列的ActiveMQ(250)1000持久性TextMessages10KB时出现问题. 一个场景要求这些消息在很长时间(几天)内保留在存储中,直到它们被消耗为止(大量数据被分阶段供许多消费者分发,可能在某些天离线). 持久存储充满这些消息后,在代理重启后,我们可以浏览/使用一些队列,直到30秒后#checkpoint调用. 此调用使代理使用所有可用内存,并且永远不会将其释放用于其他任务,例如队列浏览/使用.在内部,MessageCursor似乎决定,没有足...

java – HystrixObservableCommand的Hystrix队列大小?【代码】

当您的Hystrix命令从HystrixCommand扩展时,您可以为此指定线程池的队列大小:.. .andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter().withMaxQueueSize(10).withQueueSizeRejectionThreshold(10));但是当从HystrixObservableCommand扩展时(显然)没有线程池来配置队列大小.但是,如果您仍然希望在ExecutionIsolationSemaphoreMaxConcurrentRequests达到其限制时允许HystrixObservableCommand的排队请求,该怎么办...

如何使用暂停,线程(任务,服务)模拟队列和堆栈JavaFX【代码】

我一直在搜索YouTube,Stack-Overflow和fxexperience,甚至是oracle documentation,但我仍然没有得到它.有没有类似的例子:( 问题是如何进行堆栈和队列模拟器. >生成10个随机数.完成.>在表格中显示数字.完成.>使用10个随机数来模拟堆栈和队列.我现在不知道如何使用TextField来协调服务.>暂停模拟.或停止.– 程序需要暂停方法.我不知道如何暂停一个thead.也许用wait()和notify().我不知道. 我使用了label.textProperty.bind(service.pr...

如何使用备用事件队列显示Java对话框?【代码】

我有一些代码可以检测Java AWT事件队列是否被冻结(忙于处理某个事件或等待锁定)一段时间过长,因为有些错误的外国代码无法使用SwingWorker或类似的东西,我想提供给恢复.只是使用Thread.stop杀死事件派发线程,但它可能是危险的(并且EQ可能因为计算机暂时过载而被阻止),所以我宁愿提示用户进行确认.但是,显示一个对话框需要等待EQ被解除阻塞,这正是不可能的. 从一个合理的可移植Java程序,有没有办法显示一个对话框(或任何一种可以响应...

java – 如何实现异步队列?【代码】

鉴于队列的以下变化:interface AsyncQueue<T> {//add new element to the queuevoid add(T elem); //request single element from the queue via callback//callback will be called once for single polled element when it is available//so, to request multiple elements, poll() must be called multiple times with (possibly) different callbacksvoid poll(Consumer<T> callback); }我发现我不知道如何使用java.util.conc...

java中用byte[]数组实现的队列和用Byte[]实现的队列实际占用空间对比【代码】【图】

我用byte[]实现了一个队列,创建对象,也用ArrayBlockingQueue<Byte>创建对象,添加10M个byte/Byte后通过对象流输出到文件,文件的大小可以代表对象的大小,一探java装箱额外占用空间的大小。 测试代码:import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.Queue; import java.util.Scanner; import...

java – CommonPool中的ParallelStream队列任务,而不是自定义池【代码】

我想为parallelStream使用自定义ThreadPool.原因是我想在任务中使用MDCContext.这是我编写的使用自定义ThreadPool的代码:final ExecutorService mdcPool = MDCExecutors.newCachedThreadPool(); mdcPool.submit(() -> ruleset.getOperationList().parallelStream().forEach(operation -> {log.info("Sample log line"); });当MDC上下文没有被复制到任务时,我查看了日志.这些是我发现的日志.第一个日志在“(pool-16-thread-1)”中执...

Java:具有长期使用者的并发队列以及短期生产者的处理保证【代码】

我正在寻找一个并发队列的现有实现,可以用来实现典型的生产者 – 消费者模式,但需要注意以下几点.每个生产者都是短暂的,但在退出之前必须阻止,直到它放入队列的所有消息都被消费者处理.消费者和队列是长寿的. 我所拥有的一些想法是使用单个分区队列,其中每个分区都分配给生产者,或者为每个生产者设置专用队列,并在生产者队列之上构建一种复合队列,供消费者使用. 这似乎是http服务器的常见模式,它有许多http线程,它们就像队列的生产...

阻塞 - 相关标签