Java多线程(五)——多线程的多线程池

 

目录

一、引言

二、多线程池种类

三、多线程池实现

四、总结


 

一、引言

 

我们可以创建多线程了为什么要用多线程池?

服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多;如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足;

线程池主要用来解决线程生命周期开销问题和资源不足问题,简单来讲就是管理线程的池子,类似数据库连接池,如果自己写的话通过监听线程的生命周期也可以写出来。

 

 

二、多线程池种类

 

  • newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
  • newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
  • newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
  • newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

 

 

三、多线程池实现

 

举个简单的例子创建定长的多线程池newFixedThreadPool

public class TestThreadpool {
    public static  void main(String [] args)
    {
        ExecutorService fixPool = Executors.newFixedThreadPool(5);
        for(int i=0;i<10;i++)
        {
            fixPool.execute(new Thread(new Runnable() {
                public void run() {
                    System.out.println(Thread.currentThread().getName()+"输出");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }));

        }

    }
}

输出结果:每次最多只能执行五个线程,多的话就只能排队等待

pool-1-thread-1输出
pool-1-thread-2输出
pool-1-thread-3输出
pool-1-thread-4输出
pool-1-thread-5输出
pool-1-thread-3输出
pool-1-thread-5输出
pool-1-thread-4输出
pool-1-thread-2输出
pool-1-thread-1输出

 

 

四、总结

 

  • 多线程池种类;

 

  • 多线程池实现;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值