executors

Java通过Executors框架提供四种线程池

{

        /**创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。*/
        ExecutorService executorService= Executors.newCachedThreadPool();

        for (int i=0;i<10;i++)
        {
            final int index=i;
            executorService.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(index);
                }
            });

        }

    }
{
        /**创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。**/
        ExecutorService service= Executors.newFixedThreadPool(2);
        for (int i = 0; i <10 ; i++) {
            final int  index=i;
            service.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        System.out.println(index);
                        Thread.sleep(2000);
                    }catch (Exception e ){
                        System.out.println(e.getMessage());
                    }
                }
            });
        }
    }
	{


    public static void main(String[] args) {
        /**创建一个定长线程池,支持定时及周期性任务执行**/
        testOne();
        testTwo();

    }

    public static  void testOne(){
        /**表示延迟3秒执行。*/
        ScheduledExecutorService scheduledExecutorService= Executors.newScheduledThreadPool(2);
        scheduledExecutorService.schedule(new Runnable() {
            @Override
            public void run() {
                System.out.println("delay 2 seconds");
            }
        },2, TimeUnit.SECONDS);
    }

    public static void testTwo(){
        /**表示延迟1秒后每3秒执行一次*/
        ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
        scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
            public void run() {
                System.out.println("delay 1 seconds, and excute every 3 seconds");
            }
        }, 1, 3, TimeUnit.SECONDS);
    }
}
{
        /**
         创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行**/
        ExecutorService executorService= Executors.newSingleThreadExecutor();
        for (int i = 0; i <10 ; i++) {

                final int index = i;
                executorService.execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Thread.sleep(2000);
                            System.out.println(index);
                            }catch(Exception e){
                                e.getMessage();
                         }
                        }
                });

        }
    }

线程池里面做了些啥 ,JDK是有工具可以查看 jconsole 在JDK的bin目录下
在这里插入图片描述程序在JDK中运行后的监控
在这里插入图片描述
技术原理都差不多 多做记录 多学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Executors是Java中提供的一个工具类,用于创建和管理线程池。根据引用[2],Executors类可以创建不同种类的线程池。其中一种是固定大小线程池,在这种线程池中,可以指定线程池的大小,即同时执行的线程数量。通过调用Executors类中的newFixedThreadPool方法,可以创建一个固定大小的线程池。该方法的返回值是一个ExecutorService对象,表示创建的线程池。 引用提到,ExecutorService对象可以执行Runnable对象或者Callable对象代表的线程。Runnable是一个接口,表示一个可以在后台执行的任务,而Callable是一个接口,表示具有返回值的任务。通过将这些任务提交给ExecutorService对象,线程池就可以执行这些任务。 在创建固定大小线程池时,可以指定线程池的大小,即同时执行的线程数量。这些线程会从一个固定大小的线程池中获取,并执行被提交的任务。当任务执行完成后,线程会被返回到线程池中,以供下一个任务使用。 总结起来,Executors是一个Java工具类,用于创建和管理线程池。通过调用其提供的方法,例如newFixedThreadPool,可以创建一个固定大小的线程池,并通过返回的ExecutorService对象来执行Runnable或Callable对象代表的线程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Java线程池系列--线程池的种类(Executors的用法)](https://blog.csdn.net/feiying0canglang/article/details/120518082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值