Thread方法

2020-11-24 11:36:08 浏览数 (1)

getId()

这个方法返回线程的 ID 值,类型为 long。线程的 ID 在线程的整个生命周期中都不变。

getPriority()和setPriority()

这两个方法控制线程的优先级。调度程序处理线程优先级的策略之一是,如果有优先级高的线程在等待,就不运行优先级低的线程。不过,大多数情况下都无法影响调度程序解释优先级的方式。线程的优先级使用 1~10 之间的整数表示。

setName()和getName()

开发者使用这两个方法设定或取回单个线程的名称。为线程起名字是个好习惯,因为这样调试时更方便,尤其是使用 jvisualvm 等工具。13.2 节会介绍如何使用 jvisualvm。

getState()

返回一个 Thread.State 对象,说明线程处于什么状态。表示状态的各个值在 6.5.1 节介绍过。

isAlive()

用来测试线程是否还“活着”。

start()

这个方法用来创建一个新应用线程,然后再调用 run() 方法调度这个线程,开始执行。正常情况下,执行到 run() 方法的末尾或者执行 run() 方法中的一个 return 语句后,线程就会结束运行。

interrupt()

如果调用 sleep()、wait() 或 join() 方法时阻塞了某个线程,那么在表示这个线程的 Thread 对象上调用 interrupt() 方法,会让这个线程抛出 InterruptedException 异常(并把线程唤醒)。如果线程中涉及可中断的 I/O 操作,那么这个 I/O 操作会终止,而且线程会收到 ClosedByInterruptException 异常。即便线程没有从事任何可中断的操作,线程的中断状态也会被设为 true。

join()

在调用 join() 方法的 Thread 对象“死亡”之前,当前线程一直处于等待状态。可以把这个方法理解为一个指令,在其他线程结束之前,当前线程不会继续向前运行。

setDaemon()

用户线程是这样一种线程,只要它还“活着”,进程就无法退出——这是线程的默认行为。有时,程序员希望线程不阻止进程退出——这种线程叫守护线程。一个线程是守护线程还是用户线程,由 setDaemon() 方法控制。

setUncaughtExceptionHandler()

线程因抛出异常而退出时,默认的行为是打印线程的名称、异常的类型、异常消息和堆栈跟踪。如果这么做还不够,可以在线程中安装一个自定义的处理程序,处理未捕获的异常。

0 人点赞