Thread 类的一些方法说明
- join():等待这个线程死亡。 使当前线程在该线程之后执行,join源码如下
可以看出来,join实际调用wait()方法 - interrupt():中断这个线程。 除非当前线程中断自身,这是始终允许的,所以调用此线程的checkAccess方法,这可能会导致抛出SecurityException 。 如果该线程阻塞的调用wait() , wait(long) ,或wait(long, int)的方法Object类,或者在join() , join(long) , join(long, int) , sleep(long) ,或sleep(long, int) ,这个类的方法,那么它的中断状态将被清除,并且将收到一个InterruptedException 。 如果该线程在可阻止在I / O操作InterruptibleChannel则信道将被关闭,该线程的中断状态将被设置,并且螺纹将收到一个ClosedByInterruptException 。 如果该线程在Selector中被阻塞,则线程的中断状态将被设置,并且它将从选择操作立即返回,可能具有非零值,就像调用了选择器的wakeup方法一样。 如果以前的条件都不成立,则该线程的中断状态将被设置。 中断不存在的线程不需要任何效果。 也就是说,interrupt方法只会将线程的中断标志位设置为true,而不会中断线程运行,需要程序员根据中断标志位来中断程序运行
- isInterrupted():测试这个线程是否被中断。 线程的中断状态不受此方法的影响。
- sleep():使当前正在执行的线程以指定的毫秒数暂停。重点是当前正在执行的线程,而不是调用该方法的线程。如下程序
虽然是t1线程调的sleep()方法,但是当前线程为main线程,因此是main线程休眠 - setDaemon(boolean on):将此线程标记为daemon线程或用户线程。 当运行的唯一线程都是守护进程线程时,Java虚拟机将退出。 当当前线程执行完毕时,不管守护线程是否执行完毕,jvm都会退出