Thread是Java线程的基础类,也是最常用到的类,里面方法比较多,可以和Thread线程状态一起拿来说下。
Thread基本上分5大状态,新建,就绪,执行,阻塞,死亡;
新建状态:这个容易理解,直接new 一个Thread就是新建;
就绪状态:就是在执行start之后,当前线程就处于就绪状态,至于要执行不执行就是程序不能控制的了,是由当前服务器本地线程管理决定的;这里要注意启动线程不要用run,run还是在主线程里面执行;
执行状态:当线程获得CPU时间,线程才从就绪状态进入到运行状态;
阻塞:线程进入运行状态后,可能由于多种原因让线程进入阻塞状态,如:调用sleep()方法让线程睡眠,调用wait()方法让线程等待,调用join()方法、suspend()方法(它现已被弃用!)以及阻塞式IO方法。sleep和wait最大的区别是:sleep()不释放同步锁,wait()释放同步锁;
死亡:run()方法的正常退出就让线程进入到死亡状态,还有当一个异常未被捕获而终止了run()方法的执行也将进入到死亡状态!
除了上面提到的方法,还有以下一些方法:
join():可以让线程按顺序执行;
yield(): 线程礼让方法,让该线程进入就绪状态,CPU重新分配;
interrupt():给当前线程设置一个标记位,告诉线程要结束了,具体什么时间结束还是靠线程自己决定,最好的方式是run方法执行完成;
stop():直接终止该线程,这个方法已经放弃,因为不安全;
setName():设置线程名称;
setPriority():设置优先级;
主要是以上这些方法。