1、线程池原理
创建一个线程,需要一个Thread对象和一个Runable接口实例。每次都去new一个Thread对象是很耗费时间的,而且不好管
理。线程池就是为了复用已存在的Thread对象,防止不停地创建Thread对象带来的性能损耗。
2、线程池流程流程总的说明
线程池中会有一个HashSet,里面存放着Worker对象。这个Worker中会存有一个Thread对象,会使用这个thread执行任务。
这个Worker对象的多少代表着线程池的线程容量,每个Worker会从BlockingQueue中获取你的Runnable实例任务,进行执行,
没有的话,会阻塞在那里,直到获取到队列中的任务。
新建线程任务流程1、如果HashSet中的线程数量没有达到核心线程数量,那么就会新创建一个Worker对象,直接执行你的任务。
2、如果HashSet中的线程数量已经达到核心的线程大小并且任务队列没有满,不再创建这个Worker对象,会将你的任务放
到队列中。
3、如果HashSet中的线程数量已经达到核心的线程大小并且任务队列满了,那么就会创建Worker对象,直到达到最大线程
数量为止。
4、如果HashSet中的线程数量已经达到最大线程大小,新来的任务就会被拒掉。
想了解更多相关资讯请关注java培训频道-查看更多,了解相关专业课程信息您可在线咨询也可免费申请试课。关注赋能网了解更多:4008-569-579