12. 并发
多进程和多线程的区别就是线程之间的数据是可以共享的
12.1 什么是线程
线程可以并发运行
不要调用 Thread 类或者 Runnable 对象的 run 方法, 直接调用 run 方法会在同一个新城中执行这个任务
12.2 线程状态
线程的 6 中状态
- New
- Runnable
- Blocked
- Waiting
- Timed waiting
- Terminated
12.2.1 新建线程
new 创建一个线程时候, 状态是 New
12.2.2 可运行线程
调用 start 方法的时候, 现成处于 runnable 状态, 当然由于系统对线程的调度或者分片, 线程可能并未运行, 所以线程的状态是 runnable (可运行)
现成调用 yield
静态方法或者被阻塞或等待时候才失去控制权
12.2.3 阻塞和等待线程
不活动状态, 不进行代码运行
- 当线程试图获取内部的对象锁而这个锁被其他线程占用, 则会被阻塞, 当锁被释放时候, 将变成非阻塞状态
- 当线程等待另一个线程通知调度器出现一个条件的时候, 现成进入等待状态
- 当设置了超时参数并运行超时进入计时等待
12.2.4 终止线程
- 正常退出
- 出现未捕捉的异常
12.3 线程属性
12.3.1 中断线程
执行到最后并 return 时候 和未捕获的异常的时候线程会终止, interrupt 可以请求终止一个线程, 要想知道线程是否中断, 需要调用静态的 Thread.currentThread 获取到当前线程, 然后再调用 isInterrupted 方法
说明
创建时间: 2023-11-19 19:27:00 , 最后编辑于 2023-11-19 20:45:00