首页 > java线程 > 创建线程池的几种方式

创建线程池的几种方式

作者:bin
  • 1.Executors.newCachedThreadPool();
  • 创建一个可缓存线程池,应用中存在的线程数可以无限大

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

            //1.创建一个可缓存线程池,应用中存在的线程数可以无限大
            ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
            //2.描述:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
            //ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(2);
    
            for(int i=0;i<10;i++)
            {
                final int index=i;
                newCachedThreadPool.execute(new Runnable() {
                    @Override
                    public void run() {
                       System.out.println("nihao" + index);
                    }
                });
            }
    
  • 3.Executors.newScheduledThreadPool(2)
  • 创建一个定长线程池,支持定时及周期性任务执行。

                //定时调度线程
                ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(2);
    
                for(int i=0;i<10;i++)
                {
                    final int index=i;
                    //延迟三秒执行
                    newScheduledThreadPool.schedule(new Runnable() {
                        @Override
                        public void run() {
                            System.out.println("nihao" + index);
                        }
                    }, 3, TimeUnit.SECONDS);
                }
    
  • 4.Executors.newSingleThreadExecutor();
  • 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

            /**
             * 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,
             * 保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
             */
        
            ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();
    
            for(int i=0;i<10;i++)
            {
                final int index=i;
                newSingleThreadExecutor.execute(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("nihao" + index);
                    }
                });
            }
    

    您必须 [ 登录 ] 才能发表留言!