关于线程控制

最近在写一个聊天室程序,最近才开始用java,还是有点生疏。

线程,亮点是线程的异步性,难点是线程的同步,理解并且控制好线程,对线程的学习和应用至关重要!

问题:

写一个线程,让他一直运行在主程序运行期间,如何安全有效的关闭线程?

常用做法:

while(flag)

{

XXX//do something....

}

void close(){

this.flag=false;

}

通过这种主动标志,有时候可以让线程停止。但是如果,在XXX处出现让线程阻塞的情况,显然close()方法无法关闭线程,而且会造成线程的阻塞。

比如,XXX可能是,A=B.accept();//假如B没有accept到A,那么线程就会阻塞在这个地方.

解决方案:

void close(){

this.flag=false;

new A(XXX);//此处应是任何可以使线程运行下去的方法,保证线程运行到while-loop对flag的判断

}

当然在实现程序中,要比这复杂,但是基本思路是这样,欢迎批评指正!

 

转载于:https://www.cnblogs.com/lknny/p/4772288.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值