java多线程基础(2)-调度方式之暂停当前线程方式1-阻塞
来源:互联网 发布:身份证被别人注册淘宝 编辑:程序博客网 时间:2024/05/17 12:47
线程阻塞
任何时候线程必须停下来等待它没有的资源时,这个时候线程就会发生阻塞。
要让网络程序中的线程自己放弃cpu控制权,最常见的方式就是对io阻塞。
由于cpu比网络和磁盘快得多,网络程序经常会在等待数据从网络到达或向网络发送数据时发生阻塞现象。即使只阻塞几毫秒,这一点时间也足够其他线程用来完成一些重要的任务。
线程在进入一个同步(synchronized)的方法或代码块时也会阻塞。㘝这个线程没有所同步对象的锁,而其他线程同步拥有这个锁,这个线程就会暂停,知道锁被释放为止,如果这个锁永远不释放,那么这个线程就会永远的停止,也就是发生了死锁。
无论是io阻塞还是锁阻塞,都不会释放线程已经拥有的锁。对于io阻塞,这不是个大问题,因为无非有两种情况:最后io终将不再阻塞或者将抛出一个ioexception异常,然后线程退出这个同步块或方法,并释放他的锁。不过,如果一个线程由于没得到一个锁而阻塞,将永远不会放弃自己已经拥有的锁,则有可能导致死锁线程。
1 0
- java多线程基础(2)-调度方式之暂停当前线程方式1-阻塞
- java多线程基础(3)-调度方式之暂停当前线程方式2-放弃
- java多线程基础(4)-调度方式之暂停当前线程方式3-线程休眠(sleep)
- java多线程基础(5)-调度方式之暂停当前线程方式4-连接线程(join)
- java多线程基础(6)-调度方式之暂停当前线程方式5-等待(wait)
- java多线程基础(1)-由调度方式引入线程各种运行状态
- Java基础:多线程之线程创建的两种方式
- Java多线程基础学习之线程的创建方式总结
- Java多线程基础--09之 interrupt()和线程终止方式
- 浅谈java多线程之创建线程方式
- java多线程之-线程创建方式
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式 (r)
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
- eclipse中maven项目jar包不在同一个目录下
- Android APK版本升级设计
- 危机十足站长的生命觉悟:拼命也得每天挤一滴墨水!
- phpCMS 使用总结
- hdu1796(二进制容斥原理基本运用)
- java多线程基础(2)-调度方式之暂停当前线程方式1-阻塞
- SQLServer 表被锁
- CISCO路由器配置防止DDOS攻击
- Linux上安装JDK环境变量配置
- 验证码无法显示,服务器端出现异常:Could not initialize class sun.awt.X11GraphicsEnvironment
- iOS多显示器编程指导
- HTML <meta> 标签 遇到<meta http-equiv="refresh" content="0; url=">详解
- windows10 安装zookeeper
- 系统app使用动态库加载失败