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

时间:2010-12-06 22:17:46

标签: jboss jms jboss-messaging

我正在加载测试jboss消息安装,其中5个生产者生成100,000个100k消息。我看到了很大的瓶颈。当我监视分析器时,我看到有15个名为WorkerThread#的线程。这些线程100%分配,无需等待。我认为他们可能有关系。有谁知道这些线程服务的功能以及是否有线程池设置。我正在使用支持

JBoss企业应用服务器4.3 CP08
JBoss企业服务总线4.4 CP04
JBoss Transactions 4.2.3._CP07
JBoss Messaging 1.4.0.SP3-CP09
JBoss Rules 4.0.7
JBoss jBPM 3.2.9
JBoss Web Services 2.0.1.SP2_CP07

2 个答案:

答案 0 :(得分:2)

我已经弄清楚了。它不是一个线程池。在定义Jboss Messaging的远程连接器的jboss-messaging.sar / remoting-bisocket.xml文件中,您会看到几个值,主要是clientMaxPool,maxPoolSize,numAcceptThreads。

在远程处理中,当建立套接字时,会创建线程来监视该套接字,最大值为“numAcceptThreads”。所有这个线程都是从套接字读取数据并将其交给客户端池中的线程(由maxPoolSize控制)。

名为workerThread#[]的线程引用接受线程。当我创建更多生成器时,我看到更多的原因是因为对于Jboss Messaging的bisocket传输,显然有三个套接字被创建。最初有3个,但是当我创建5个生产者时,这个数字增加到15个(或者对于那些没有数学倾向的人来说是5 * 3))。它们100%分配的原因是因为当我发送所有这些消息时,线程从套接字读取,切换到服务器线程,返回读取套接字(这总是数据)

所以简短的回答是没有池来管理这些线程。你可以有超过1个接受线程,但它几乎没有意义。这是因为它的工作是如此微小,读取数据,交出数据,读取数据......所以有更多的线程只会增加同步开销。

答案 1 :(得分:-1)

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

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