一、线程状态
线程一共拥有以下五种状态:
1.创建状态:通过继承Thread类或者实现Runnable接口的方法新建一个线程类,然后new一个该线程类的对象;
2.就绪状态:线程类对象执行start()方法,可以使线程进入就绪队列,等待cpu资源(cpu时间片);
当处于就绪状态的线程获得cpu资源时,会进入运行状态,即执行该线程;
当处于运行状态的线程时间片用完后,会退回到就绪状态,等待cpu资源;
当处于阻塞状态的线程,阻塞解除时也会变成就绪状态,进入就绪队列;
3.运行状态:就绪状态的线程获得了cpu资源就成为了运行状态,执行程序体;
4.阻塞状态:线程因为某种原因放弃cpu使用权,除非解除阻塞,重新进入就绪状态,有三种阻塞情况:
(1)等待阻塞:运行的线程,执行wait()方法,系统会进入阻塞状态
(2)同步阻塞:运行的线程,在获取对象的同步锁时,若该同步锁被别的线程占用,则会进入阻塞状态
(3)其他阻塞:运行的线程执行sleep()方法或join()方法,或发出I/O请求,则线程进入阻塞状态