只有一個線程正在創建。在某些情況下,它需要關閉。 在這種情況下,可以通過檢查isInterrupted()
來完成。但是如果有空的InputStream,它會在in.readUTF()
上凍結。這可以如何解決?線程從空DataInputStream凍結readUTF
DataInputStream in;
....
public void stop() {
thread.interrupt();
}
public void run() {
while(true) {
String str = in.readUTF(); // locking here, when stream is empty
S.o.p(str)
if(isInterrupted) {
return;
}}
}
public void main(String args[]) {
Thread thread = new Thread();
}
你必須:中斷線程。關閉流,設置socket.setSoTimeout(如果工作瓦特/套接字)或任何其他可用的超時(這可能會轉化爲某些時候)...或者只是去非阻塞IO。 – bestsss 2012-04-26 12:03:08