run()方法完成执行后线程会自动关闭吗?

lia*_*dee 13 java multithreading

我正在为我的游戏开发网络,并且运行客户端和服务器.服务器当前在另一个服务器中无限循环Thread,但我的客户端和游戏代码在同一个线程中.当客户端处理来自服务器的数据时,我遇到了问题,游戏一直挂起,直到客户端完成处理新数据包.

我试图解决这个问题,通过使客户端类实现Runnable,并在一个单独的线程中运行.我遇到了一些其他错误,我想知道这是不是问题.

我有run方法和sendPacket方法:

public void run() {
    // empty
}

public void sendPacket() {
    somePacketSendingCode();
}
Run Code Online (Sandbox Code Playgroud)

run方法中没有代码,因为我只使用该sendPacket方法.sendPacket接收数据包时由侦听器线程调用.

如果我在run方法中没有代码,这是否意味着客户端Thread在启动后停止执行?如果是这样,那是不是意味着该sendPacket方法什么都不做?

cod*_*tsu 6

AFAIK,当run()方法返回时,线程停止.线程状态


Tud*_*dor 6

如果您没有在sendPacket方法中调用run方法,那么它将永远不会执行.一旦run返回,线程就会停止.

请注意,只有run方法包含线程的实际代码.你在帖子中说你有sendPacket方法而且只使用那个方法.这意味着您实际上并没有并行运行任何东西.调用时会触发并行线程start(),它会run异步调用该方法.仅呼叫sendPacket不是并行性.