线程拥有五大声明周期:
- Initialization:使用new Thread()创建一个线程,线程处于初始化状态
- Runnable:调用线程的start方法后,线程处于可执行状态
- Running: 调用线程run方法,线程处于运行状态
- Block:调用wait/sleep/await方法后,线程进入阻塞状态
- Dead:线程执行完毕,进入销毁状态
wait和sleep的区别:wait是Object的方法,而sleep是Thread的方法,wait会释放锁,sleep并不会释放锁
创建线程的方法:
- 继承Thread类
- 实现Runnable接口
- 实现Callable接口
继承Thread类和实现Runnable的接口的区别:实现Runnable接口适用于多个线程执行同一个资源共享的任务的情况,而继承Thread类则使用于多个线程平行执行资源不共享的任务,并且实现Runnable接口还能同时实现其它接口,所以要更加灵活
实现Runnable接口和实现Callable接口的区别:Callable接口的效率更高,且有返回值