线程池全面总结 (5)

Thread通过new来新建一个线程,这个过程是是初始化一些线程信息,如线程名,id,线程所属group等,可以认为只是个普通的对象。调用Thread的start()后Java虚拟机会为其创建方法调用栈和程序计数器,同时将hasBeenStarted为true,之后调用start方法就会有异常。

处于这个状态中的线程并没有开始运行,只是表示该线程可以运行了。至于该线程何时开始运行,取决于JVM里线程调度器的调度。当线程获取cpu后,run()方法会被调用。不要自己去调用Thread的run()方法。之后根据CPU的调度在就绪——运行——阻塞间切换,直到run()方法结束或其他方式停止线程,进入dead状态。

 

源码解析

  Java中线程池主要是并发包java.util.concurrent 中 ThreadPoolExecutor这个类实现的。

 

线程池框架Executor

java中的线程池是通过Executor框架实现的,Executor 框架包括类

Executor

Executors

ExecutorService

ThreadPoolExecutor

Callable

Future

FutureTask

 

(1) Executor: 所有线程池的接口,只有一个方法。

public interface Executor {
  void execute(Runnable command);
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydswf.html