关于线程控制
最近在寫一個聊天室程序,最近才開始用java,還是有點生疏。
線程,亮點是線程的異步性,難點是線程的同步,理解并且控制好線程,對線程的學(xué)習(xí)和應(yīng)用至關(guān)重要!
問題:
寫一個線程,讓他一直運行在主程序運行期間,如何安全有效的關(guān)閉線程?
常用做法:
while(flag)
{
XXX//do something....
}
void close(){
this.flag=false;
}
通過這種主動標(biāo)志,有時候可以讓線程停止。但是如果,在XXX處出現(xiàn)讓線程阻塞的情況,顯然close()方法無法關(guān)閉線程,而且會造成線程的阻塞。
比如,XXX可能是,A=B.accept();//假如B沒有accept到A,那么線程就會阻塞在這個地方.
解決方案:
void close(){
this.flag=false;
new A(XXX);//此處應(yīng)是任何可以使線程運行下去的方法,保證線程運行到while-loop對flag的判斷
}
當(dāng)然在實現(xiàn)程序中,要比這復(fù)雜,但是基本思路是這樣,歡迎批評指正!
?
轉(zhuǎn)載于:https://www.cnblogs.com/lknny/p/4772288.html
總結(jié)
- 上一篇: pat1038. Recover the
- 下一篇: 【读书笔记】iOS-NSString的l