我在阅读JMS书时遇到了一个问题。以下是代码。 我的问题是与线程有关,所以我删除了不必要的JMS代码。为什么使用线程来调用类的构造函数?
public class MessageConsumer implements MessageListener{
public MessageConsumer(){ //Constructor
//configure JMS Connections
}
@Override
public void onMessage(Message message) {
//receive message
}
public static void main(String[] args) {
new Thread(){
@Override
public void run() {
new MessageConsumer();
}
}.start();
}
}
在上面的代码中,为什么作者调用构造函数作为新线程。 我尝试如下调用构造函数,它给了相同的结果
public static void main(String[] args) {
new MessageConsumer();
}
那么,有没有在上面的两种方式有什么区别。我知道创建一个新的Thread()将创建一个单独的新线程。然而,在这个JMS的简单例子中,我是否需要将构造函数作为单独的线程来调用?
由于JMS用于与主程序异步通信,它们正在演示如何在单独的线程中使用它。但从这个例子中我不清楚什么会阻止你的主程序终止。 –
对于这段代码来说,创建一个新的线程是没有意义的,除非你讨厌主线程,并且想让另一个线程不知道主线程。也许他会在用main方法创建jms东西后添加更多的东西。 – 2015-09-05 21:59:46
@SkinnyJ我通过在调试模式下运行它来检查代码,即使主线程退出程序仍然继续运行,看起来像MessageListner有一个单独的线程。 – Angom