多线程创建之线程池

本文探讨了在实际开发中如何通过使用线程池来优化资源管理和提高响应速度。介绍了线程池的基本概念,如newFixedThreadPool、newScheduledThreadPool等,以及它们在处理并发线程时的优势。通过示例展示了如何创建和执行线程池任务,并强调了关闭线程池的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:     

        实际开发中经常创建和销毁,使用量特别大的资源,比如并发情况下的线程,对性能影响特别大

思路:

        提前创建好好多个线程,放入线程池,使用时直接获取,使用完放回词中,可以避免频繁创建销毁,实现重复利用

好处:

  • 提高响应速度
  • 降低资源消耗(放入线程池中不需要每次都创建)
  • 便于线程管理

方法:

newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

class NumberThread implements Runnable{

    @Override
    public void run() {
        for (int i=0;i<=100;i++){
            if (i % 2 ==0){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
    }
}
class NumberThread1 implements Runnable{

    @Override
    public void run() {
        for (int i=0;i<=100;i++){
            if (i % 2 !=0){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
    }
}
public class ThreadPool {

    public static void main(String[] args) {
        //1.提供指定线程数量的线程池
        ExecutorService executorService = Executors.newFixedThreadPool(10);

        System.out.println(executorService.getClass());

        ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executorService;

        //threadPoolExecutor.setCorePoolSize(15);

        //2.执行指定线程的操作。需要提供实现Runnable接口或Callable接口实现类的对象
        NumberThread numberThread = new NumberThread();

        executorService.execute(numberThread); //适合使用与RunnableThreadPoolExecutor
        executorService.execute(new NumberThread1());

        //executorService.submit(); //适合使用于Callable

        //3.关闭线程池
        executorService.shutdown();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值