线程中,while(true)循环中,accept或者recieve监听,当外部网络断开后,有没有办法终止这个线程?
我打算在Service中判断,满足条件后,就重启这个Service自己,因为Service中启动的线程,所以Service停止的时候,线程也终止了。大家有没有更好的办法终止这个阻塞线程?因为如果不终止的话,下次连接上网络后启动线程,可能会端口被占用。内存也因为线程没有退出来,而越用越多。
------解决方案--------------------
断网时做标记,然后在线程里面对标记做判断断网时就return;
------解决方案--------------------
你启动多线程时,thread应该要保存起来,然后收到断网通知后,把这些thread都interrupt(),interrupt只是解除socket的阻塞,并不是终止,因此你会捕获一个interruptException,并在其中,做一些额外的处理,然后socket.close或者关闭当前线程。
------解决方案--------------------
设置标记 在循环里面读取标记
另外 你结束Service是结束不了线程的 除非你结束整个进程