并发编程——线程池的概念

什么是线程池?

        线程池就是提前创建若干个线程,当有任务需要去处理时,会去调用线程池中的线程去处理,当处理完后,它不会直接被销毁,而是等待下一个任务。因为我们在创建线程或销毁线程都会消耗系统的资源,所以如果频繁的创建和销毁线程时,我们可以考虑使用线程池来提高系统的性能。

 

在java中有三个常用的线程池:

1)FixedThreadPool

2)  SingleThreadExecutor

3)  CachedThreadPool (这个较为常用)

 

1.第一种线程池在创建时,它的线程数量是固定的,当需要运行的线程数量大体上变化不大时,适合使用这种线程池。因为固定线程数它的好处是:一次性进性进行线程的开销,之后再使用时就不会再需要消耗系统的资源了。

2.第二种线程池在创建时,它只会创建线程数量为1的线程池,所有提交的这个线程池的任务都会按照提交的先后顺序排队执行。单个线程执行的好处是:由于任务之间没有并发执行的,因此提交到线程池中的任务之间不会相互干扰。程序执行的结果更具有确定性。

3.第三种线程池是与缓存有关的线程池,每次任务提交到线程池的时候,如果池中没有空闲的线程,线程池就会为这个任务创建一个线程,如果有空闲的线程,就会使用已有的空闲线程去执行任务。如果没有任务要执行的话,它就会将已有的线程进行销毁,因为这个线程池中存在一个销毁机制,如果线程在规定的时间内没有被使用过,则这个线程就会被销毁,这样就会节省很多的资源。


线程池的使用:

线程池的使用只需要用到一个接口和一个类就行了。

ExecutorService 是所有线程池都实现了的接口,如果要用到这个接口可以定于句柄。

Executors类    用于创建不同种类的线程池,Executor,new***();  就可以返回一个线程池对象,***表示的是线程池的名字。

public class CreateThreadPool{
    public static void main(String[] args) {
        //定义一个有5个线程的线程池
        ExecutorService fixedTP = Executors.newFixedThreadPool(5);
        ExecutorService singleTE = Executors.newSingleThreadExecutor();
        ExecutorService cachedTP = Executors.newCachedThreadPool();
    }
}

 

详细请参考:https://www.cnblogs.com/victorwux/p/9004564.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值