gpt4 book ai didi

Java 线程 : Automatic Termination

转载 作者:行者123 更新时间:2023-11-30 08:41:54 29 4
gpt4 key购买 nike

我想知道正在创建的这个线程(引用代码片段)是否会在完成其工作后在垃圾收集中自动终止。

我正在创建一个基本的聊天程序,以学习如何使用套接字、创建客户端和创建服务器。我很快发现,如果我希望能够从客户端发送和接收消息,而不是仅在发送时更新,我需要对客户端进行多线程处理。一个线程用于接收消息和更新我的 GUI,一个用于发送。我有以下代码片段,只要我的聊天室 GUI 上的按钮触发 ActionEvent 就会调用它。一旦我注意到每次发送消息时,都会创建一个顺序更高的线程,我就开始担心了。我担心以前的线程没有被正确删除并且仍在内存中,因此数字更高。

代码:

public void send(String message)
{
//Create a new thread so that the client can receive messages while it's sending them.
Thread thread = new Thread(new Runnable()
{
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run()
{
try
{
System.out.println("Writing chars");
output.writeUTF(message);
} catch (IOException exception)
{
System.out.println("Error attempting to write: " + message + " to the server.");
exception.printStackTrace();
}
}
});
thread.start();
}

最佳答案

在您的 run() 方法返回后,该 Thread 将终止并最终被垃圾收集。您会看到递增的 ID 号,因为您正在为每个此类操作启动新线程 - 这不是建议的架构,但确实有效。

关于Java 线程 : Automatic Termination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778237/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com