栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

线程池的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线程池的使用

线程池的主要参数有以下6个。 1. corePoolSize(线程池基本大小):当向线程池提交一个任务时,若线程池已创建的线程数小于 corePoolSize,就会通过创建一个新线程来执行该任务,直到已创建的线程数大于或等于 corePoolSize时,(除了利用提交新任务来创建和启动线程(按需构造),也可以通过 prestartCoreThread() 或 prestartAllCoreThreads() 方法来提前启动线程池中的基本线程。) 2. maximumPoolSize(线程池最大大小):线程池所允许的最大线程个数。当队列满了,且已创建 的线程数小于maximumPoolSize,则线程池会创建新的线程来执行任务。另外,对于无界队列, 可忽略该参数。 3. keepAliveTime(线程存活保持时间)当线程池中线程数大于核心线程数时,线程的空闲时间如果 超过线程存活时间,那么这个线程就会被销毁,直到线程池中的线程数小于等于核心线程数。 4. workQueue(任务队列):用于传输和保存等待执行任务的阻塞队列。 5. threadFactory(线程工厂):用于创建新线程。threadFactory创建的线程也是采用new Thread()方式,threadFactory创建的线程名都具有统一的风格:pool-m-thread-n(m为线程池 的编号,n为线程池内的线程编号)。 6. handler(线程饱和策略):当线程池和队列都满了,再加入线程会执行此策略。

 

package com.jg.unit8;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;


public class Test1 {
    public static void main(String[] args) {
        ThreadPoolExecutor executor = new ThreadPoolExecutor(
                5, 10, 1L, TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(100), new ThreadPoolExecutor.CallerRunsPolicy());
        List list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            Runnable runnable = new MyRunnable(i + "");
            executor.execute(runnable);
        }
    }
}

class MyRunnable implements Runnable {

    private String command;

    public MyRunnable(String command) {
        this.command = command;
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "启动,当前时间:" + new Date());
        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + "结束,当前时间:" + new Date());
    }

    @Override
    public String toString() {
        return command;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号