我有一个程序通过xot(x25 over tcp/ip)协议(protocol)连接到服务器。
我有一个线程要连接,使用xot库向服务器发送recv数据。
public class MyThread extends Thread{
public MyThread() {
}
@Override
public void run(){
// init sock
...
// connect to server
sock.connect("server_address", timeout);
System.out.println("send data ..");
sock.send(data);
System.out.println("send data ok, recv data ..");
Data data = sock.recv();
System.out.println("recv data ok");
}
}
我使用的lib可以处理连接超时,但是没有像setSoTimeout()这样的方法来处理发送和接收数据时的超时。
所以,当send和recv方法运行很长时间时,我不知道如何正确停止mythread。
任何人都可以建议我一些解决方案。
谢谢
全
最佳答案
MyThread myt = new MyThread();
myt.start();
... later on ...
myt.interrupt();
请注意,interrupt()
并不完全万无一失(请阅读文档),但它很有可能对您的情况有所帮助。您可能还需要修改自己的代码(在 MyThread
中),以使用 interrupted
或 isInterrupted
关于java:如何停止等待很长时间的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012034/