首页 > 编程语言 > 详细

java线程池

时间:2020-09-21 12:49:54      阅读:51      评论:0      收藏:0      [点我收藏+]

1. 为什么使用线程池

1、降低资源的消耗
2、提高响应的速度
3、方便管理。
线程池可以达到:线程复用、可以控制最大并发数、管理线程的目的

2. 线程池的使用

2.1 Executors的三种方法

package pool;

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

/**
 * study01
 *
 * @author : xgj
 * @description : de
 * @date : 2020-09-21 10:18
 **/
public class ThreadPool {
    public static void main(String[] args) {
        //创建只有一个线程的线程池,但是其阻塞队列长度可以达到Integer.MAX_VALUE
        ExecutorService threadPool = Executors.newSingleThreadExecutor();
        for (int i = 0; i <10 ; i++) {
            threadPool.execute(()->{
                  //输出线程名
                System.out.println(Thread.currentThread().getName());
            });
        }
        //使用完成后需要进行关闭
        threadPool.shutdown();
        
    }
}

运行截图
技术分享图片

package pool;

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

/**
 * study01
 *
 * @author : xgj
 * @description : de
 * @date : 2020-09-21 10:18
 **/
public class ThreadPool {
    public static void main(String[] args) {
        //创建指定个数的线程池,其阻塞队列长度可以达到Integer.MAX_VALUE
        ExecutorService threadPool = Executors.newFixedThreadPool(5);
        for (int i = 0; i <10 ; i++) {
            threadPool.execute(()->{
                //输出线程的名字
                System.out.println(Thread.currentThread().getName());
            });
        }
        //使用完成后需要进行关闭
        threadPool.shutdown();

    }
}

运行结果:
技术分享图片

package pool;

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

/**
 * study01
 *
 * @author : xgj
 * @description : de
 * @date : 2020-09-21 10:18
 **/
public class ThreadPool {
    public static void main(String[] args) {
        //创建个数动态添加的线程池,其数量可以达到Integer.MAX_VALUE
        ExecutorService threadPool = Executors.newCachedThreadPool();
        for (int i = 0; i <10 ; i++) {
            threadPool.execute(()->{
                //输出线程的名字
                System.out.println(Thread.currentThread().getName());
            });
        }
        //使用完成后需要进行关闭
        threadPool.shutdown();

    }
}

运行结果:
技术分享图片

但是实际开发中最好不要通过Executors创建,而是自己通过ThreadPoolExecutor创建,这样可以自定义设定参数,策略。

java线程池

原文:https://www.cnblogs.com/jiezao/p/13704385.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!