我看过类似的帖子,但没有得到满意的答复。
在JMS接收器线程中,我看到while循环编码如下:
while(true)
{
Thread.sleep(1000);
}
上面的线程还附加了一个注册的侦听器,它实现了messageListener接口,从而提供了回调onMessage()事件。
当在侦听器上触发onMessage()事件时,接收器线程会发生什么?
它的状态是否会变错?它是否被中断(并引发中断的异常)?
上述while循环到底发生了什么?
答案 0 :(得分:0)
上面的代码只是说'永远等待' - 它很可能是一个匆忙设计的方式,在某人点击Ctrl-C之前不结束这个帖子。 while(true)的代码将始终为true,因此它只会在此处阻塞,直到此线程被中断。这个帖子里面没有魔法!
然而,在您的第二个(不可见)“消息调度程序线程”中,已经在Connection.start()中自动创建了消息,并且会将消息分派给您的onMessage()方法。直到你调用Connection.stop()或退出你的程序。