为什么我的线程没有死?

约书亚记
public void run() {
        assignPlayer();

        for(int i = 0; i < numPlayers; i++) {
            PlayerListener listener = new PlayerListener(fromPlayer.get(i), this, i);
            new Thread(listener).start();
        }

        return;
}

我正在实施一个套接字游戏。每个游戏都有2位玩家,并且每个游戏都有其自己的线程。上面的run方法将PlayerListener(这是一个Runnable对象)分配给每个玩家以侦听其传入的输出流,并在有操作要执行的情况下从游戏对象中调用某些方法。一切运行正常,但是我正在考虑游戏线程何时消亡,因此我有意在PlayerListener分配完成后设置“ return”(但是我认为在分配完成之后,将没有任何语句,因此run方法将运行反正 )。无论如何,我的游戏仍在运行,我的线程和游戏对象不应该一起死掉吗?

这是因为PlayerListener对象仍不时调用游戏对象的方法,因此该对象不会被垃圾回收?

我读了Java线程何时到达“死”状态的文章它指出“如果run()方法返回”,那么我很好奇...

灰色的

所以我故意在PlayerListener分配完成后设置“ return”

return;是多余的,因为它在方法的末尾。如果没有它,该方法将返回。线程唯一等待它派生的线程的时间是,如果您专门调用thread.join()每个线程。

无论如何,我的游戏仍在运行,我的线程和游戏对象不应该一起死掉吗?

您派生的线程很可能是非守护程序线程。JVM退出时,守护程序线程退出,但JVM等待所有非守护程序线程自行退出。当您分叉线程时,它们将继承分叉它们的线程的守护程序状态。如果您希望这些线程在run()方法完成后退出,请说:

Thread thread = new Thread(listener);
// make sure the threads will be killed when all other threads finish
thread.setDaemon(true);
thread.start();

我阅读了Java线程何时到达“死亡”状态的文章。它指出“如果run()方法返回”,那么我很好奇...

正确的。如果您在线程的run()方法中,则该线程run()方法完成时完成。但是,再次,在循环中分叉的线程将保持应用程序运行,除非将它们专门设置为守护程序线程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的窗口没有从我的线程中更新?

来自分类Dev

江铃控股 - 为什么JIT没有消除我的死代码

来自分类Dev

为什么在我的示例中线程没有饿死

来自分类Dev

为什么在我的示例中线程没有饿死

来自分类Dev

为什么我的排队任务没有由线程池中的所有线程处理?

来自分类Dev

为什么我使用eztrace拍摄的运行时映像没有显示线程的空闲状态?

来自分类Dev

为什么我的Java程序会创建无限数量的Windows?(使用线程,没有任何循环)

来自分类Dev

为什么我的等待线程即使收到通知也没有唤醒?

来自分类Dev

第一次尝试使用并发线程。为什么我没有输出?

来自分类Dev

为什么我的浏览器在线程中的类和id之间没有区别?

来自分类Dev

为什么在单独的线程中修改时我的变量没有改变?C++/提升

来自分类Dev

为什么在LLVM IR中没有将空函数作为死代码删除?

来自分类Dev

为什么我的变量没有更新?

来自分类Dev

为什么我的地图没有更新?

来自分类Dev

为什么我的CSS没有缩小?

来自分类Dev

为什么我的TCS没有等待?

来自分类Dev

为什么我的函数没有返回?

来自分类Dev

为什么我的观点没有改变?

来自分类Dev

为什么我的NSOperation没有取消?

来自分类Dev

为什么我的墙纸没有显示

来自分类Dev

为什么我的div没有高度?

来自分类Dev

为什么我的UISlider没有动画?

来自分类Dev

为什么我的CSS没有被应用?

来自分类Dev

为什么我的图像没有显示?

来自分类Dev

为什么我的查询没有结果?

来自分类Dev

为什么我的空间没有修剪

来自分类Dev

为什么我的SeekBar没有更新?

来自分类Dev

为什么我的网格没有出现?

来自分类Dev

为什么我的指令没有显示?

Related 相关文章

热门标签

归档