1、线程的状态
创建状态(new):准备好了一个多线程的对象。
就绪状态(runnable):调用了start()方法,等待CPU的调度。
运行状态(running):执行了run()方法。
阻塞状态(blocked):暂时停止执行,可能将资源交至其他线程处。
终止状态(dead):线程销毁。
当需要一个新的线程进行某任务时,当线程被创建后不会立即进入就绪状态而是当一定的条件满足后才可进入;当线程进入就绪状态后,不一定立即就可以获得CPU执行时间,若CPU正在执行其他事物,则需等待,当获得CPU执行时间后,即可进入了运行状态。在运行过程中,也可能被各种情况所打断。在突然中断或子任务执行完毕后则线程就会消亡。
2、Thread类的方法
(1)线程的命名与获取
多线程的运行状态是不确定的,所以对于多线程操作必须有一个明确标识出多线程对象的信息,此信息往往通过名称来描述。
创建线程时设置名称:public Thread(Runnable target,String name)
设置线程名称:public final synchronized void setName(String name)
取得线程名称:public final String getName()
class MyRunnable implements Runnable{ public void run() { for(int i = 0;i < 5;i++) { //getName()为获取线程名 System.out.println("当前线程名:"+Thread.currentThread().getName()+",i "+i); } } } public class MoreThread4_25{ public static void main(String[] args) { //获取主线程名 System.out.println(Thread.currentThread().getName()); MyRunnable myRunnable = new MyRunnable(); //未设置线程名 new Thread(myRunnable).start(); //设置线程名 new Thread(myRunnable,"线程1").start(); } }
通过上述代码及运行结果可以发现,若线程没有设置名称,则会随机分配一个名称且主线程名为main;注意在设置线程名时一个线程一个名字避免重复。