在学习多线程之前,我们有必要老生常谈一下线程的基础知识。
1.什么是线程
在聊什么是线程的时候,不得不提另一个名词——进程。因为线程可以理解为独立运行在进程中的子任务。
2.线程的使用
线程的使用方式有四种,1 继承Thread类,2实现Runnable接口,3实现Callable/Future接口。4使用线程池。其中Thread类实现了Runnable接口,Runnable接口实现run方法,而Callable接口实现call方法,run方法无返回值,call方法允许返回值
3.线程的状态,以及状态之间的流转
线程共有六种状态,分别是:
初始化(new):新建了线程对象,但是还未调用start方法。
就绪(ready):就绪是指该线程调用start方法后,等待分配cpu的状态
运行 (running):运行是线程获取到cpu资源,执行任务的阶段。
阻塞(block):线程被锁阻塞时的状态
等待(waiting):等待其他线程做出相应操作的阶段(例如调用wait,join,park方法,等待其他线程唤醒)
超时等待(timed_waiting):与等待相比,拥有一个等待时间,超过时间可以自行返回
终止(terminated):线程执行完毕。
一个线程被创建进入初始化阶段,调用start方法后进入就绪状态,当分配到cpu时间片时进入运行状态