我第一次在Java中使用线程。让我知道这是什么导致无限循环以及如何解决它。我认为该问题是由于我同时使用GUI和线程而引起的。

发生的情况是弹出了无限数量的GUI。

public static void main(String[] args) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
                new RollplayGUI();
        }
    });
}

public RollplayGUI() {
    createGUI();
    RollplayGUI rg = new RollplayGUI();
    Thread trg = new Thread(rg);
    trg.setDaemon(true);
    trg.run();
}

public void run() {
        //Some fun stuff my daemon thread is supposed to do
    }


我这样做的原因是run()方法会执行一些网络代码,这些代码会阻塞,直到它从另一个程序获得连接为止。

最佳答案

您的代码失败,因为RollplayGUI构造函数实例化了一个新的RollplayGUI对象。这将导致无限循环,并可能导致堆栈溢出。

10-01 19:24