I modified it to use multithreads, but still only one work. I use jstack and find other threads are blocked by Message msg = receiver.receive();
public class Worker extends Thread{ public Worker() throws Exception{ recvConnFactory = new ActiveMQConnectionFactory( queueConnString); recvQConn = recvConnFactory. createQueueConnection(); recvQConn.start(); recvSession = recvQConn.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE); Queue queue = recvSession.createQueue("queue"); receiver = recvSession.createReceiver(queue); } @Override public void run() { while (true) { try { Message msg = receiver.receive(); if(!this.doWork(msg)){ break; } } catch (JMSException e) { logger.error(e.getMessage(), e); } } } } public class Main{ public static void main(String[] args){ Thread[] workers=new Worker[10]; for(int i=0;i<workers.length;i++){ workers[i]=new Worker(); workers[i].start(); } //sleep and wait for(int i=0;i<workers.length;i++){ workers[i].join(); } } On Thu, Jan 23, 2014 at 11:12 AM, kimmking <kimmking...@gmail.com> wrote: > > Because you have only one thread -- main thread, no more threads created. > > > > > Beijing,China > Kimm King > skype: kimmking > github.com/kimmking > > > > -- > View this message in context: > http://activemq.2283324.n4.nabble.com/why-only-one-thread-working-tp4676688p4676689.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com.