Java 并发编程理论基础 3 Java线程
Java 线程
Java 线程的状态
- 初始化状态
- 运行状态
- 阻塞状态
- 有限时等待状态
- 无限时等待状态
- 终止状态
初始化状态到运行状态的转换
调用 start()
运行状态到阻塞状态的转换
only 线程等待 synchronized 的隐式锁
运行状态到无限时等待状态的转换
- 在锁代码中调用 wait()
- 调用 Thread.join() 方法, 等待目标线程执行完毕
- 调用 LockSupport.park() 方法. 并发包的实现
运行状态到有限时间等待状态的转换
- 调用 Thread.sleep(long millis)
- 在锁代码中调用 wait(long millis)
- 调用 Thread.join(long millis)
- 调用 LockSupport.parkNanos(Object blocker, long deadline)
- 调用 LockSupport.parkUntil(long deadline)
运行状态到终止状态的转换
- 线程执行结束
- 线程报错抛出异常
- interrupt()方法 (interrupt() 是设置中断标志, 被中断线程捕获这个异常, 会导致中断标志被重置)