Java 并行无限循环
我第一次在Java中使用线程。让我知道是什么导致了无限循环,以及如何解决它。我认为这个问题是因为我在使用线程的同时使用了GUI 出现的情况是,会弹出无限多个GUI副本Java 并行无限循环,java,multithreading,Java,Multithreading,我第一次在Java中使用线程。让我知道是什么导致了无限循环,以及如何解决它。我认为这个问题是因为我在使用线程的同时使用了GUI 出现的情况是,会弹出无限多个GUI副本 public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new RollplayGUI(); }
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对象。这将导致一个无限循环,并可能导致。。。堆栈溢出。这是一个无限循环,因为您的回滚GUI()创建了一个新的回滚GUI()。删除此行:
RollplayGUI rg = new RollplayGUI();
贾斯汀说了什么,但一旦修复,你就永远不会开始你的线程。您只需创建一个Thread对象(它将在线程启动时表示线程),然后在原始线程中执行其run()方法。使用trg.start()而不是trg.run()来实际启动线程。当您创建第一个
RollplayGUI
时,将调用构造函数。在该构造函数中,您创建了一个新的RollplayGUI
,其构造函数将再次调用RollplayGUI
。这将无限期地发生,这就是无限循环
电话是
RollplayGUI rg = new RollplayGUI();
获得无限多gui的一个原因是,每个RollplayGUI在实例化后立即创建一个新的RollplayGUI
此外,您应该对Thread对象调用start(),而不是run。如果您调用run,那么就好像您没有执行线程。开始()正确地处理线程。当有人第一个问我关于。。。那么,下面的评论有帮助吗?你应该提供一些反馈,告诉他们你这方面的结果如何,以及你是否找到了解决方案。