[问题] 如何在 addShutdownHook 下 interrupt 特定 thread

楼主: darkgray (Nobody)   2016-12-20 17:48:07
我在写一个接收 socket 资料的程式,我想要在 class 之中会一直接收资料直到我按下 ctrl + c。
我的程式码类似像是这样
public static void main(String[] args) {
conn = new Connection(payload);
conn.connect();
while(true){
// keep the program listening to the socket data
}
conn.disconnect();
}
我要结束程式码时,执行 conn.disconnect() 这个方法。
我知道可以借由
Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
conn.disconnect();
}
}
);
得到 ctrl + c 的事件,但我在 block 中,无法得到 conn 这个 instance。
我也尝试过将整个 main 弄成另外的 Runnable thread,然后再使用 interrupte() 方法,
但我在 addShutdownHooker block 中一样无法得到我的 thread instance 来处理。
希望大大可以题点一二,谢谢。
作者: ssccg (23)   2016-12-20 21:55:00
JVM关掉OS就会回收所有socket了吧

Links booklink

Contact Us: admin [ a t ] ucptt.com