没有合适的资源?快使用搜索试试~ 我知道了~
其中Future对象用来存放该线程的返回值以及状态如何获取线程中的异常不能用try,catch来获取线程中的异常多线程包:java.util.concurren
资源详情
资源评论
资源推荐
线程的状态
线程在 Running 的过程中可能会遇到阻塞(Blocked)情况
1. 调用 join()和 sleep()方法,sleep()时间结束或被打断,join()中断,IO 完成都会回到 Runnable 状态,等待 JVM 的调度。
2. 调用 wait(),使该线程处于等待池(wait blocked pool),直到 notify()/notifyAll(),线程被唤醒被放到锁定池(lock blocked
pool ),释放同步锁使线程回到可运行状态(Runnable)
3. 对 Running 状态的线程加同步锁(Synchronized)使其进入(lock blocked pool ),同步锁被释放进入可运行状态
(Runnable)。
此外,在 runnable 状态的线程是处于被调度的线程,此时的调度顺序是不一定的。Thread 类中的 yield 方法可以让
一个 running 状态的线程转入 runnable。
关于中断:它并不像 stop 方法那样会中断一个正在运行的线程。线程会不时地检测中断标识位,以判断线程是否应
该被中断(中断标识值是否为 true)。只会影响到 wait 状态、sleep 状态和 join 状态。被打断的线程会抛出
InterruptedException。
Thread.interrupted()检查当前线程是否发生中断,返回 boolean
synchronized 在获锁的过程中是不能被中断的。
中断是一个状态!interrupt()方法只是将这个状态置为 true 而已。所以说正常运行的程序不去检测状态,就不会终止,
而 wait 等阻塞方法会去检查并抛出异常。如果在正常运行的程序中添加 while(!Thread.interrupted()) ,则同样可以在
中断后离开代码体
鲸阮
- 粉丝: 18
- 资源: 303
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0