当前位置:   article > 正文

线程创建——使用线程池_executors.newcachedthreadpool()

executors.newcachedthreadpool()

一、使用线程池

经常的创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。提前创建好多个线程,放入到线程池中,使用时直接获取,使用完放回到线程池中,这样就可以避免频繁创建销毁、实现重复利用。

线程池的好处

  • 提高响应速度(减少了创建新线程的时间)
  • 降低资源消耗(重复利用线程池中线程,不需要每次都创建)
  • 便于线程管理:corePoolSize核心池的大小、maximumPoolSize最大线程数、keepAliveTime线程没有任务时最多保持多长时间后会终止

二、线程池相关API

JDK5.0起提供了线程池相关API:ExecutorServiceExecutors

ExecutorService

  • 是真正的线程池接口,常见子类ThreadPoolExecutor
  • void execute(Runnable command):执行任务/命令,没有返回值,一般用来执行Runnable
  • < T >Future< T >submit(Callable< T >task):执行任务,有返回值,一般用来执行Callable
  • void shutdown():关闭线程池。

Executors

  • 工具类、线程池的工厂类,用来创建并返回不同类型的线程池。
  • Executors.newCachedThreadPool():创建一个可根据需要创建新线程的线程池。
  • Executors.newFixedThreadPool(n):创建一个重用固定线程数的线程池。
  • Executors.newSingleThreadExecutor():创建一个只有一个线程的线程池。
  • Executors.newScheduledThreadPool(n):创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。

三、代码实现

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadPool {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(10);

		ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor)executorService;
        threadPoolExecutor.setCorePoolSize(15);

        //executorService.submit()    //适合Callable
        executorService.execute(new NumberThread());    //适合Runnable
        executorService.execute(new NumberThread1());    //适合Runnable

        executorService.shutdown();
    }
}


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);
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 提供指定线程数量的线程池
  • 执行指定的线程操作,需要提供实现Runnable接口或者Callable接口实现类的对象。
  • 关闭连接池

输出结果:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/246516
推荐阅读
  

闽ICP备14008679号