一、线程基础
1、Java线程的状态及转换
线程状态转换图
New(新建状态):线程对象对创建后未被启动(start方法)时,线程则处于该状态 eg. Thead thread = new Tread();
Runnable(就绪状态):线程对象被创建且被调用了该对象对start方法,此时则处于就绪状态;
Running(运行状态):线程获取CPU权限进行执行;备注:线程只能由Runnable进入到Running状态;
Blocked(阻塞状态):线程通过某些原因放弃CPU使用权,暂时停止运行;直到线程进入到Runnable状态才能转到Running状态,且阻塞大致分为三种情况:
1)等待阻塞:线程调用wait()方法,让线程等待其他工作完成后唤醒(notify/notifyAll)
2) 同步阻塞:线程获取同步锁synchronized失败时,进入同步阻塞状态
3) 其他阻塞:线程调用sleep或者join或出I/O请求时,进入组设状态
Dead(死亡状态):线程执行完或因异常退出run()方法时,结束其生命周期
2、线程创建的常用方式
1)实现Runnable接口 + 重写run方法
public interface Runnable { public abstract void run(); }
1)继承Thead实现类 + 重写run方法