读书人

请问一个关于阻塞线程的终止有关问题

发布时间: 2013-09-21 22:51:34 作者: rapoo

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

读书人网 >Android

热点推荐