首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jboss Messaging WorkerThread#这些线程是什么?

Jboss Messaging WorkerThread#这些线程是什么?
EN

Stack Overflow用户
提问于 2010-12-07 06:17:46
回答 2查看 1.6K关注 0票数 2

我正在负载测试5个生产者生产100,000,100k消息的jboss消息传递安装。我看到了严重的瓶颈。当我监视分析器时,我看到有15个名为WorkerThread#的线程。这些线程被100%地分配,没有等待。我想他们可能是有关系的。有没有人知道这些线程服务的功能以及是否有线程池设置。我在用补丁

JBoss企业应用服务器4.3 CP08

JBoss企业服务总线4.4 CP04

JBoss事务4.2.3._CP07

JBoss Messaging 1.4.0.SP3-CP09

JBoss规则4.0.7

JBoss jBPM 3.2.9

JBoss网站服务2.0.1.SP2_CP07

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-08 04:04:06

我已经弄明白了。它不是一个线程池。在为Jboss消息传递定义远程连接器的jboss-messaging.sar/ remoting -bisocket.xml文件中,您可以看到两个值,主要是clientMaxPool、maxPoolSize、numAcceptThreads。

在远程处理中,当建立套接字时,会创建线程来监视该套接字,直到"numAcceptThreads“的值。这个线程所做的一切就是从套接字读取数据,并将其传递给客户端池(由maxPoolSize管理)中的一个线程。

名为workerThread#[]的线程是指接受线程。当我创建更多的生产者时,我看到更多的原因是因为对于Jboss消息传递的双套接字传输,显然创建了三个套接字。最初有3个,但当我创建5个生产者时,这个数字增加到15(或者对于那些不喜欢数学的人来说是5*3:)。它们被100%分配的原因是,当我发送线程从套接字读取的所有消息时,将其移交给服务器线程,返回到从套接字读取(其中始终是数据)。

因此,简短的答案是没有池来管理这些线程。您可以有一个以上的接受线程,但这几乎没有任何意义。这是因为它的任务非常小,读取数据,传递数据,读取数据……所以拥有更多的线程只会增加同步开销。

票数 2
EN

Stack Overflow用户

发布于 2010-12-08 03:09:29

这是来自http://download.oracle.com/javase/tutorial/uiswing/concurrency/worker.html的;希望它能有所帮助。

当Swing程序需要执行一个长时间运行的任务时,它通常使用一个工作线程,也称为后台线程。在工作线程上运行的每个任务都由一个javax.swing.SwingWorker实例表示。SwingWorker本身是一个抽象类;您必须定义一个子类才能创建一个SwingWorker对象;匿名内部类对于创建非常简单的SwingWorker对象通常很有用。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4371495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档