java多线程基础(2)-调度方式之暂停当前线程方式1-阻塞

线程阻塞

  任何时候线程必须停下来等待它没有的资源时,这个时候线程就会发生阻塞。

要让网络程序中的线程自己放弃cpu控制权,最常见的方式就是对io阻塞。

由于cpu比网络和磁盘快得多,网络程序经常会在等待数据从网络到达或向网络发送数据时发生阻塞现象。即使只阻塞几毫秒,这一点时间也足够其他线程用来完成一些重要的任务。

线程在进入一个同步(synchronized)的方法或代码块时也会阻塞。㘝这个线程没有所同步对象的锁,而其他线程同步拥有这个锁,这个线程就会暂停,知道锁被释放为止,如果这个锁永远不释放,那么这个线程就会永远的停止,也就是发生了死锁。

无论是io阻塞还是锁阻塞,都不会释放线程已经拥有的锁。对于io阻塞,这不是个大问题,因为无非有两种情况:最后io终将不再阻塞或者将抛出一个ioexception异常,然后线程退出这个同步块或方法,并释放他的锁。不过,如果一个线程由于没得到一个锁而阻塞,将永远不会放弃自己已经拥有的锁,则有可能导致死锁线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值