博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA阻塞线程池
阅读量:6801 次
发布时间:2019-06-26

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

  hot3.png

阻塞线程的意义:所有线程执行完毕才返回。

传统线程:所有任务分发完毕即返回。

 

见代码:

package com.test.test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;/** * 阻塞模式线程池 *  * @author WebSOS * @blog http://54sb.org * */public class TaskPool {	ExecutorService exePool;	private List
runnables = new ArrayList
(); private boolean isActivity = true; private Integer maxThread=100; private Integer timeOutSeconds=60; public Integer getMaxThread() { return maxThread; } public void setMaxThread(Integer maxThread) { this.maxThread = maxThread; } public TaskPool() { } public TaskPool(Integer maxThread,Integer timeOutSeconds) { this.maxThread=maxThread; this.timeOutSeconds=timeOutSeconds; } public TaskPool(List
runnables) { this.runnables.addAll(runnables); } public void execute(List
runnables) { pushTask(runnables); execute(); } public void execute() { if (!isActivity) { System.out.println("RobotTaskPool:线程池已销毁=================="); } isActivity = false; if (runnables==null||runnables.isEmpty()) { return; } Integer currThread = runnables.size(); if (currThread > maxThread) { currThread = maxThread; } exePool = Executors.newFixedThreadPool(maxThread); System.out.println("RobotTaskPool:[" + maxThread + "]执行中=================="); for (Runnable runnable : runnables) { exePool.execute(runnable); } exePool.shutdown(); try { exePool.awaitTermination(timeOutSeconds, TimeUnit.SECONDS); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("RobotTaskPool:[" + maxThread + "]执行完毕=================="); } public boolean pushTask(List
runnables) { if (!isActivity) { System.out.println("RobotTaskPool:线程池已销毁=================="); } this.runnables.addAll(runnables); return isActivity; } public boolean pushTask(Runnable runnable) { if (!isActivity) { System.out.println("RobotTaskPool:线程池已销毁=================="); } runnables.add(runnable); return isActivity; } public static void main(String[] args) { }}

 

转载于:https://my.oschina.net/hooker/blog/861833

你可能感兴趣的文章
linux sort 命令详解
查看>>
总结一下近期的面试题(一)
查看>>
Guava学习笔记:EventBus
查看>>
cordova-plugin-alipay-v2使用沙箱环境
查看>>
OSC android app 退出方法改进
查看>>
android UI之button异步处理
查看>>
quantum 相关问题总结
查看>>
Hadoop学习
查看>>
深入了解android平台的jni---编译ffmpeg源码
查看>>
计算机常用端口一览表
查看>>
【转载】Unity3d引用外部的dll
查看>>
在Oracle Enterprise Linux中安装Oracle 11g
查看>>
CentOs7 急速安装 MongoDB
查看>>
Centos6.5 git 源码安装
查看>>
android自定义TabView实现圆角列表
查看>>
HDFS之SequenceFile和MapFile
查看>>
12, Pipe
查看>>
JAVA 7 中遍历文件目录
查看>>
MySQL命令行
查看>>
ListView的使用
查看>>