我在閱讀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