线程拥有五大声明周期:

  1. Initialization:使用new Thread()创建一个线程,线程处于初始化状态
  2. Runnable:调用线程的start方法后,线程处于可执行状态
  3. Running: 调用线程run方法,线程处于运行状态
  4. Block:调用wait/sleep/await方法后,线程进入阻塞状态
  5. Dead:线程执行完毕,进入销毁状态

wait和sleep的区别:wait是Object的方法,而sleep是Thread的方法,wait会释放锁,sleep并不会释放锁

创建线程的方法:

  1. 继承Thread类
  2. 实现Runnable接口
  3. 实现Callable接口

继承Thread类和实现Runnable的接口的区别:实现Runnable接口适用于多个线程执行同一个资源共享的任务的情况,而继承Thread类则使用于多个线程平行执行资源不共享的任务,并且实现Runnable接口还能同时实现其它接口,所以要更加灵活

实现Runnable接口和实现Callable接口的区别:Callable接口的效率更高,且有返回值