Skip to content

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