java - 线程死亡时关闭套接字
问题描述
当 Java 程序终止(通过异常或手动)时,我在关闭套接字时遇到问题。我可以使用一些帮助!
我正在用 Java 编写一个使用 TCP 套接字与服务器通信的程序。我有一个由两个线程使用的套接字——一个用于发送数据,另一个用于接收数据。我目前处理这个问题的想法是在接收数据线程死亡时关闭套接字(我很想听到更多的想法)。当线程(整个程序)终止时,我没有找到任何关闭套接字的方法。有没有办法在线程死亡时调用 close 方法?(寻找类似于 C++ 的析构函数的东西)我尝试过 using 语句和 try-finally,但它没有用。
public class Receive implements Runnable {
....
....
public void run() {
Socket socket = getSocket() // Gets socket from a singleton class.
....
while (true){
....
readFromSocketFunction();
....
}
....
} // Would like to close the socket when going out from this scope.
....
}
现在,当我终止程序时,套接字继续存在。我用 Python 编写了一个简单的客户端,我注意到当我在运行时中断客户端时,它仍然关闭套接字(服务器与客户端断开连接),我希望在我的程序中具有相同的行为。
谢谢!!
解决方案
推荐阅读
- php - Laravel - 插入相关模型
- laravel - 在 laravel 的 cron 作业调度程序中运行 phpunit 的测试
- gerrit - 我可以在 Gerrit 中查看分支的最终状态吗?
- c - cmake灯丝渲染项目时出错
- wpf - 从样式中将项目添加到集合
- google-cloud-platform - 需要 iam.serviceAccounts.getIamPolicy 才能对服务帐户执行此操作
- angular - 如何从以下服务获取数据?
- php - Tinker 在 Laravel 5.8 中给出异常
- java - 带有巨大 BufferdImage 的小型 pdf 文件结果
- python - 如何在 Keras 中使用 deconv2d 获得与原始输入大小相同的层?