如何唤醒阻塞的socket 线程

在socket 通讯时候,程序退出时候,socket并未释放,这就导致socket线程被阻塞了

1、同步阻塞:

        等待锁的释放

2、等待阻塞:

        1、使用thread.sleep 造成的阻塞 结束后进入 RUNNABLE 状态

        2、使用thread.wait 造成的阻塞,使用notify 或者notifyall 唤醒

        3、使用thread.join 造成的阻塞,等待上一个线程进入RUNNABLE状态

        4、使用thread.suspend 造成的阻塞,需要使用resum 来唤醒

        5、使用LockSupport.park 造成的阻塞,使用LockSupport.unpark 来唤醒

        6、使用LockSupport.parkNano  指定时间结束后,自动唤醒,LOockSupport.parkUtil 到达指定时间,自动唤醒

join,detch 区别

主线程和子线程  关系主要有两种:

1、joinable  主线程需要明确等待操作,子线程结束后,主线程的等待操作执行结束,主线程和子线程会合,主线程必须会合可会合的子线程。在主线程的线程函数内部调用子线程对象的wait函数实现,即使子线程能够在主线程之前执行完毕,进入终止态,也必须执行会合操作,否则,系统永远不会主动销毁线程,分配给该线程的系统资源也永远不会释放。

2、detchable 可分离 表示子线程无需和主线程会合,也就是相分离的,这种情况下,子线程一旦进入终止状态,这种方式常用在线程数较多的情况下,有时让主线程逐个等待子线程结束,或者让主线程安排每个子线程结束的等待顺序,是很困难或不可能的,所以在并发子线程较多的情况下,这种方式也会经常使用

区别;

1、join会导致主线程阻塞,等待子线程终止,然后主线程终止等待线程,继续运行

2、detch,主线程继续运行,子线程在后台运行,主线程无法获取子线程的控制权,主线程结束后,由运行库负责清理与子线程相关的资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值