jjzjj

CONCURRENT

全部标签

java - 让一个线程等待一个条件

在GUI中,我有几个按钮。这些按钮分离出通过网络向服务器发送请求的工作线程。在一个单独的线程中,有一个监听器接收来自服务器的响应。此响应将传递给工作线程正在通过Observer/Observable接口(interface)执行方法的同一对象。我需要做的是让工作线程等待来自与其相关的服务器的响应。本质上,工作线程应该发送命令,然后等待指示收到正确响应的某些条件。我可以想到多种方法来做到这一点(hibernate、轮询、等待、通知、监控等),但是有没有一种特定的方法最适合这种情况? 最佳答案 我建议使用java.util.concur

java - 如何使用 JAVA 代码以编程方式捕获线程转储?

我想通过Java代码生成线程转储,我尝试为此使用ThreadMXBean,但我没有获得正确格式的线程转储,因为我们正在使用jstack命令。请任何人提供一些帮助..他们是否有其他获取线程转储的方法...使用任何其他API..我想要的线程转储格式是-2015-08-0605:51:15FullthreaddumpJavaHotSpot(TM)64-BitServerVM(24.51-b03mixedmode):"AttachListener"daemonprio=10tid=0x00007fdab805d800nid=0x7a36waitingoncondition[0x00000000

java - 使用 Java 在线程之间传输数据

我正在编写一个模仿电影院的多线程应用程序。每个人都是自己的线程,并发必须完全由信号量完成。我遇到的唯一问题是如何基本上链接线程以便它们可以通信(例如通过管道)。例如:Customer[1]是一个线程,它获取一个信号量,让它走到BoxOffice。现在客户[1]必须告诉票房代理他们想看电影“X”。然后BoxOfficeAgent[1]也是一个线程,必须检查以确保电影未满,然后卖票或告诉Customer[1]选择另一部电影。如何在保持与信号量的并发性的同时来回传递该数据?此外,我可以从java.util.concurrent使用的唯一类是Semaphore类。

java - 在高峰时间,请求在 Tomcat 8 中花费太多时间

我已经使用以下配置配置了tomcat:AJP连接器的相同数字,maxThreads=500和acceptCount="150"。它大部分时间都运行良好,但在高峰时段,当我收到比平时多得多的请求时,响应时间太长。有时会超过15秒,在极少数情况下会超时。它可能看起来没问题,因为maxThreads=500并且我有几千个请求,但是,在服务器状态上我看到:Maxthreads:500Currentthreadcount:17Currentthreadbusy:1Keepalivesocketscount:1目前我看到的currentThreadCount的最大数量是27。如果有这么多连接,to

java - SpringBoot @SqsListener - 不工作 - 异常 - TaskRejectedException

我有一个AWSSQS,队列中已经有5000条消息(示例消息看起来像这样“Hello@1”)我创建了一个SpringBoot应用程序,并在其中一个组件类中创建了一个方法来从SQS读取消息。packagecom.example.aws.sqs.service;importorg.springframework.cloud.aws.messaging.listener.SqsMessageDeletionPolicy;importorg.springframework.cloud.aws.messaging.listener.annotation.SqsListener;importorg.

java - 为什么 Queue.poll 比 Iteration 快? (java.util.concurrent.ConcurrentLinkedQueue)

我有一段代码可以从队列中获取所有元素。之后我不关心队列的状态,我可以确信在我从队列中删除元素时队列不会被修改。我最初使用迭代器来提取元素,因为我认为它比轮询元素更快...但我运行了以下测试:ConcurrentLinkedQueuequeue=newConcurrentLinkedQueue();for(inti=0;ilist=newLinkedList();longstart=System.currentTimeMillis();for(Objectobject:queue)list.add(object);longtime1=System.currentTimeMillis()-

java - 使用 java.util.concurrent.Executor 阻止 tomcat 停止

背景:我需要使用java.util.concurrent.Executor来序列化WebService中一些遗留代码的执行。我在WebService类中添加了一个成员变量executor。它由springframework从外部注入(inject)。执行器bean定义如下:Tomcat版本:6.0.22Java版本:1.6Spring框架:2.5.5问题:WS按预期工作。我们将它推出到Linux服务器上。然后我们意识到tomcat停止脚本不能再停止服务。我对tomcat实例使用kill-3。在线程转储中,我找到了这些行:"pool-2-thread-1"prio=10tid=0xad6

Java:在修改集合内容时迭代集合

我希望迭代一个集合,但集合的内容会在迭代过程中修改。我希望在创建迭代器时迭代原始集合,而不是迭代添加到集合中的任何新元素。这怎么可能?这是set的默认行为还是我该如何实现?我能想到的一种方法是从原始集合中获取一个不会被修改的新集合,但这似乎不够优雅,必须有更好的解决方案。 最佳答案 如果您想确保看不到任何新元素,那么拍摄集合的快照对我来说就是正确的解决方案。有一些集合,例如ConcurrentSkipListSet这将允许您继续迭代,但我无法看到关于迭代器在查看新元素方面的行为的任何保证。编辑:CopyOnWriteArraySet

java - Android-Studio-2.3 错误 :java. util.concurrent.ExecutionException : java. lang.RuntimeException: AAPT 进程未准备好接收命令

您好,我是Android-Studio-2.3的新手我弹出了这些错误消息:错误:java.util.concurrent.ExecutionException:java.lang.RuntimeException:AAPT进程未准备好接收命令错误:任务':app:mergeDebugResources'执行失败。Error:java.util.concurrent.ExecutionException:java.lang.RuntimeException:AAPTprocessnotreadytoreceivecommands我访问了很多网站,但找不到解决这个问题的办法顺便说一下,我已

java - Eclipse 上的 Glassfish 4 - 超时 - java.util.concurrent.TimeoutException

我在让Glassfish服务器实际启动并在Eclipse(luna)安装上保持运行时遇到了麻烦。我已经让Glassfish在Netbeans中运行良好。我已经在Eclipse中创建了服务器,我可以启动它,但进度条达到大约69%然后停止并最终给我一个错误:Unabletostartserverontime.java.util.concurrent.TimeoutException奇怪的是,在等待错误出现的同时,我也可以转到localhost:8080并且服务器正在运行,我也可以转到管理控制台。我也增加了超时(开始时为240秒),但同样的事情发生了。我已经在Eclipse中删除并重新创建了