socket多线程无法close的问题

在处理数据的A线程中,存在一个socket。尝试在B线程中关闭该socket时,发现accept操作卡住,无法正常关闭。解决办法是引入一个静态变量作为锁,在A线程中检测锁状态关闭socket,B线程控制锁的状态。这种方案能避免线程碰撞,但寻求更安全、简洁的方法。
摘要由CSDN通过智能技术生成

现在遇到一个情景,处理数据的代码运行在A线程里,在B线程里对A中的socket的accept进行close,结果每次都卡在accpet那里,无法close成功,因为在本线程中,socket可以正常关闭,但是如果在B线程来关闭A线程中的的socket,则会出现线程碰撞问题。
想了很久,找到一个可行的方法是,设置一个静态变量,用于充当锁,如果过关闭锁,socket在本线程关闭。在B线程中对开关进行开启控制。

  • A线程:
	if(Utils.openlock==true){
   
					if(socket!=null)socket.close
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值