12.3.1 中断线程

interrupt 方法可以用来请求终止一个线程.

  • 已经废弃 stop 方法可以强制终止线程

调用 interrupt 方法时会设置线程的中断状态.

  • 每个线程都应该不时地检查这个标志

查看是否设置中断状态:

  • 如果线程被阻塞, 那么无法检查

image.png

image.png

有个疑惑的地方, 被 sleep 或 wait 调用阻塞的线程上调用 interrupt 方法时, 都被阻塞了怎么调用 interrupt 方法?

将中断解释为终止运行, 用法:

image.png

调用 sleep (可中断方法) 之前不要调用 isInterrupted(), sleep 会清除中断状态并抛出 InterruptedException:

image.png
image.png

image.png

12.3.2 守护线程

转换为守护线程:

  1. t.setDaemon(true);

12.3.3 线程名

  1. var t = new Thread(runnable);
  2. t.setName("Web crawler");

12.3.4 未捕获异常的处理器

实现 Thread.UncaughtExceptionHandler 接口

ThreadGroup 实现了 Thread.UncaughtExceptionHandler.

image.png

image.png

12.3.5 线程优先级

  1. setPriority()