1) 新建:当一个Thread类或者其子类的对象被声明并创建时,新的线程对象处于新建状态,此时它已经有了相应的内存空间和其他资源。
2) 就绪:处于新建状态的线程被启动后,将进入线程队列排队等待CUP服务,这个时候具备了运行的条件,一旦轮到CPU的时候,就可以脱离创建它的主线程独立开始自己的生命周期。
3) 运行:就绪的线程被调度并获得CUP的处理边进入了运行状态,每一个Thread类及其子类的对象都有一个重要的run()方法,当线程对象被调度执行的时候,它将自动调用本对象的run()方法,从第一句代码开始执行。所以说对线程的操作应该写到run()方法中。
4) 阻塞:一个正在执行的线程如果在某种情况下不能执行了。进入阻塞状态,这个时候它不能进入排队状态,只有引起了阻塞的原因消失的时候,线程才可以继续进入排队状态等待CUP处理。
5) 死亡:处于死亡状态的线程不具有继续执行的能力,线程死亡主要的原因是正常运行的线程完成了全部工作,即执行完了run()方法,另外就是被提前强制的终止了。
Java中编程实现多线程应有两种途径,一种是创建自己的线程子类,另外是实现一个接口Runnable.无论是那种途径最终读需要使用Thread类及其方法。Thread类有两种构造方法,public Thread()用来创建一个线程对象。public Thread(Runnable r)创建线程对象,参数r成为被创建的目标对象。这个目标必须实现Runnbale接口,给出该接口的run()方法的方法体,再方法体中操作。用两个构造方法创建完的线程就是一个新建的状态,等待处理。然后启动线程的start()方法,启动线程对象,线程进入排队状态也就是就绪状态。然后线程操作run()方法这个方法里的内容是被系统处理的内容。如果想使线程进入休眠状态可以调用sleep()方法,可以给一个参数,代表休眠的毫秒。如果给两个参数代表那秒。终止线程用yield()方法来完成。判断线程是否销毁可以用isAlive()方法判断线程是否活着。Runnable接口只有一个run()方法,我们实现这个接口把要操作的代码写到这个方法中,然后再把实现了整个接口的类的实例传给Therad类的构造方法即可操作线程。线程同步是一个在处理线程的时候需要注意的问题,同步方法要用synchronized关键字类修饰。