博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的自定义线程池(java)
阅读量:6981 次
发布时间:2019-06-27

本文共 1782 字,大约阅读时间需要 5 分钟。

package threadpool_test;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingDeque;import java.util.concurrent.TimeUnit;/** * 自定义一个简单的线程池 *  * ***/public class ThreadPool {    private static final int coreThreadNum=3;//核心线程数    private static final int maxThreadNum=8;//最大线程数        private boolean working=true;//打开、关闭线程池    private BlockingQueue
workThreads=new LinkedBlockingDeque<>(maxThreadNum);//当前工作线程 private BlockingQueue
tasks=new LinkedBlockingDeque<>(10);//任务队列 public void execute(Runnable task) throws InterruptedException{ if(task==null) throw new NullPointerException(); int workNum=workThreads.size(); if(workNum
package threadpool_test;import java.util.concurrent.TimeUnit;/** * 测试类 * **/public class testMain {public static void main(String[] args) throws InterruptedException {    ThreadPool pool=new ThreadPool();    for(int i=0;i<20;i++){        pool.execute(new Task("任务"+i));    }    TimeUnit.SECONDS.sleep(4);    pool.shutDown();}}

显示结果:

当前运行线程名:Thread-0当前任务名为:任务0当前运行线程名:Thread-2当前任务名为:任务2当前运行线程名:Thread-2当前任务名为:任务4当前运行线程名:Thread-2当前任务名为:任务5当前运行线程名:Thread-2当前任务名为:任务6当前运行线程名:Thread-2当前任务名为:任务7当前运行线程名:Thread-2当前任务名为:任务8当前运行线程名:Thread-2当前任务名为:任务9当前运行线程名:Thread-2当前任务名为:任务10当前运行线程名:Thread-2当前任务名为:任务11当前运行线程名:Thread-2当前任务名为:任务12开启新线程了Thread-3当前运行线程名:Thread-1当前任务名为:任务1当前运行线程名:Thread-1当前任务名为:任务14当前运行线程名:Thread-3当前任务名为:任务15当前运行线程名:Thread-3当前任务名为:任务16当前运行线程名:Thread-3当前任务名为:任务17当前运行线程名:Thread-3当前任务名为:任务18当前运行线程名:Thread-3当前任务名为:任务19当前运行线程名:Thread-0当前任务名为:任务3终止线程名:Thread-0真的终止了终止线程名:Thread-1终止线程名:Thread-2真的终止了真的终止了终止线程名:Thread-3终止线程池线程真的终止了

ps:该线程池功能非常之简单,仅为了加深线程池核心原理而做。里面关于任务队列满后的处理情况,在这里直接简单的使用放弃该任务的方法;

转载于:https://www.cnblogs.com/jkavor/p/7234965.html

你可能感兴趣的文章
java 基础知识八 正则表达式
查看>>
第五周作业
查看>>
C语言关闭日志文件时忘了将日志文件全局变量指针置为NULL
查看>>
matlab练习程序(高斯牛顿法最优化)
查看>>
【Python】keras卷积神经网络识别mnist
查看>>
DX11 preprocessor && Dynamic shader linkage
查看>>
手机网站的几点注意
查看>>
XSS跨站脚本攻击
查看>>
paramiko的使用
查看>>
tomcat的startup.bat闪退问题解决
查看>>
你不怕他离职吗?
查看>>
使用Linux进行缓冲区溢出实验的配置记录
查看>>
JavaScript-数据引用类型对象
查看>>
mysql删除开放用户权限
查看>>
17.08.17
查看>>
枚举算法
查看>>
April Fools Contest 2018
查看>>
关于flume配置加载(二)
查看>>
delphi 字符串string转流TStream
查看>>
Lync 小技巧-51-Lync 2013-不加域-客户端-1-下载-证书-信任链
查看>>