对于线程来讲,从我们创建它一直到线程运行结束,在这个过程中,线程的状态可能是这样的:
创建:已经有Thread实例了, 但是CPU还有为其分配资源和时间片。
就绪:线程已经获得了运行所需的所有资源,只等CPU进行时间调度。
运行:线程位于当前CPU时间片中,正在执行相关逻辑。
休眠:一般是调用Thread.sleep后的状态,这时线程依然持有运行所需的各种资源,但是不会被CPU调度。
挂起:一般是调用Thread.suspend后的状态,和休眠类似,CPU不会调度该线程,不同的是,这种状态下,线程会释放所有资源。
死亡:线程运行结束或者调用了Thread.stop方法。
下面我们来演示如何进行线程状态切换,首先我们会用到下面方法:
Thread()或者Thread(Runnable):构造线程。
Thread.start:启动线程。
Thread.sleep:将线程切换至休眠状态。
Thread.interrupt:中断线程的执行。
Thread.join:等待某线程结束。
Thread.yield:剥夺线程在CPU上的执行时间片,等待下一次调度。
Object.wait:将Object上所有线程锁定,直到notify方法才继续运行。
Object.notify:随机唤醒Object上的1个线程。
Object.notifyAll:唤醒Object上的所有线程。
|
|