相关文章:
【多线程】一、线程状态切换
【多线程】二、线程优先级&守护线程
【多线程】三、线程访问变量
【多线程】四、线程异常抓捕
【多线程】五、线程池
【多线程】六、锁与同步
【多线程】七、阻塞队列
【多线程】八、异步计算结果获取
【多线程】九、Android异步任务
状态 | 说明 |
---|
新建(New) | 线程新创建,尚未执行start() 方法 |
可运行(Runnable) | 线程就绪,等待OS调度运行 |
等待(Waiting) | 线程主动停止活动(休眠,礼让,等条件满足),等待被唤醒 |
阻塞(Blocked) | 线程被锁阻塞,停止活动 |
终止(Terminated) | 线程自然终止或异常死亡 |
线程让出资源 | 说明 |
---|
Thread#join(); | 当前线程放弃CPU,放弃锁,进入Waiting ,直到目标线程跑完进入Runnable |
Thread::sleep(); | 当前线程放弃CPU,保持锁,进入Waiting ,超时后转Runnable 等调度; |
Thread::yield(); | 当前线程放弃CPU,保持锁,进入Runnable ,等待调度(礼让高优先级); |
中断线程
Runnable runTask = new Runnable(){
public void run(){
while(!Thread.currentThread().isInterrupted()){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
中断相关 | 说明 |
---|
Thread#interrupt(); | 请求中断目标线程,若目标线程运行在sleep ,wait ,join 中直接以异常中断之; |
Thread#isInterrupted(); | 检查中断标记位,返回是否应中断执行;无复位操作可多次调用 |
Thread::interrupted(); | 返回当前线程是否被中断,并把中断位复位为false; |