一、start()与run()方法
start()方法异步执行,run()同步执行。使用start()时,系统会启动一个新的线程。当使用run()时,系统会在当前线程中执行。不会启动新的线程。 执行start()方法的顺序不代表线程启动的顺序。
start()方法直接执行线程中的run()方法。
二、isAlive()方法
isAlive()测试线程是否处于活动状态。活动状态即线程已启动且尚未终止的状态。如果线程处于正在运行或准备开始运行的状态,就认为线程是“存活”的。
三、getStackTrace()与 getAllStackTrace()
返回一个表示该线程堆栈跟踪元素数组。如果该线程尚未启动或已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该数组中最新的方法调用。最后一个元素代表堆栈底,是该数组中最旧的方法调用。
四、interrupt(),isInterrupted()与interrupted()
interrupt()中断当前的线程。isInterrupted()实例方法,判定该线程实例是否已中断,检测后,不清楚中断状态。interrupted()静态方法,判定当前线程是否已中断,检测中断后,会清除中断状态。
五、中断线程的方法
1.使用interrupt()方法中断线程。在主线程中中断新线程,在新线程中检测当前线程是否中断。
2.在sleep状态下停止线程。先调用interrupt(),在调用sleep(),会出现中断异常,处理此异常实现终止线程。
六、线程的优先级
1.线程的优先级具有继承性。
2.高优先级的线程获取的操作系统资源更多,执行的更快。
3.操作系统分配资源具有随机性,并不是线程的优先级越高,就一定先执行完。
七、守护线程(daemon)
1.守护线程是一种特殊的线程,当进程中不存在非守护线程(即用户线程),守护线程自动销毁。守护线程的作用是为其他线程的运行提供便利服务,最典型的应用就是GC。