public class App {
public static void main(String[] args) throws InterruptedException {
System.out.println("这是测试项目");

// ExecutorService executorService=Executors.newCachedThreadPool();
// Executors.newSingleThreadExecutor();
// Executors.newFixedThreadPool(100);
ExecutorService executorService = Executors.newFixedThreadPool(5);

// ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 200,
// TimeUnit.MICROSECONDS,
// new ArrayBlockingQueue<Runnable>(5));

while (true) {
for (int i = 0; i < 10; i++) {
Mytask mytask = new Mytask(i);
//executor.execute(mytask);
executorService.execute(mytask);

// System.out.println("线程池线程数目"+executor.getPoolSize()+"
// 等待的任务数目"+executor.getQueue().size()
// +",已执行完别的任务数目:"+executor.getCompletedTaskCount());

System.out.println("当前线程活动数目:" + ((ThreadPoolExecutor) executorService).getActiveCount() + ",等待的任务数目:"
+ ((ThreadPoolExecutor) executorService).getTaskCount() + ",已执行完别的任务数目"
+ ((ThreadPoolExecutor) executorService).getCompletedTaskCount());
}
//executorService.shutdown();
//executor.shutdown();
System.out.println("主线程睡眠10秒 再执行~~~~~~~~~~~~~~~");
Thread.sleep(10000);
}
}
}

-----------------------------------------------------------

public class Mytask implements Runnable {
private int taskNum;

public Mytask(int num) {
this.taskNum = num;
}

@Override
public void run() {
System.out.println("正在执行task" + this.taskNum);
try {

Thread.currentThread();
Thread.sleep(4000);

} catch (InterruptedException e) {

e.printStackTrace();
}
System.out.println("task" + taskNum + "执行完毕");

}

}

--------------------注解
 
得到 ExecutorService 当前活动的线程数
 
https://blog.csdn.net/yingzishizhe/article/details/8769907
 
Java并发编程:线程池的使用(重点需要看)
 
http://www.cnblogs.com/dolphin0520/p/3932921.html
 
Java通过Executors提供四种线程池
 
https://www.cnblogs.com/webglcn/p/5265901.html
 
Executors创建的4种线程池的使用
 
https://www.cnblogs.com/ljp-sun/p/6580147.html

 

关于java 线程池 ThreadPoolExceutor 之 TestDemo的更多相关文章

  1. Java 线程池框架核心代码分析--转

    原文地址:http://www.codeceo.com/article/java-thread-pool-kernal.html 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和 ...

  2. Java线程池使用说明

    Java线程池使用说明 转自:http://blog.csdn.net/sd0902/article/details/8395677 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极 ...

  3. (转载)JAVA线程池管理

    平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发攻城师却在这个上面吃了不少苦头.怎么做一套简便的线程开发模式 ...

  4. Java线程池的那些事

    熟悉java多线程的朋友一定十分了解java的线程池,jdk中的核心实现类为java.util.concurrent.ThreadPoolExecutor.大家可能了解到它的原理,甚至看过它的源码:但 ...

  5. 四种Java线程池用法解析

    本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 执行一个异步任务你还只是如下 ...

  6. Java线程池的几种实现 及 常见问题讲解

    工作中,经常会涉及到线程.比如有些任务,经常会交与线程去异步执行.抑或服务端程序为每个请求单独建立一个线程处理任务.线程之外的,比如我们用的数据库连接.这些创建销毁或者打开关闭的操作,非常影响系统性能 ...

  7. Java线程池应用

    Executors工具类用于创建Java线程池和定时器. newFixedThreadPool:创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程.在任意点,在大多数 nThread ...

  8. Java线程池的原理及几类线程池的介绍

    刚刚研究了一下线程池,如果有不足之处,请大家不吝赐教,大家共同学习.共同交流. 在什么情况下使用线程池? 单个任务处理的时间比较短 将需处理的任务的数量大 使用线程池的好处: 减少在创建和销毁线程上所 ...

  9. Java线程池与java.util.concurrent

    Java(Android)线程池 介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行 ...

随机推荐

  1. 使用python的logging模块(转)

    一.从一个使用场景开始 开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件 import logging # 创建一个logger logger = logging.getLogger(' ...

  2. Python 类型和对象(转)

    译文:http://wiki.woodpecker.org.cn/moin/PyTypesAndObjects 原文:http://www.cafepy.com/article/python_attr ...

  3. 转:docker的核心技术深度剖析

    一.docker是什么 Docker的英文本意是码头工人,也就是搬运工,这种搬运工搬运的是集装箱(Container),集装箱里面装的可不是商品货物,而是任意类型的App,Docker把App(叫Pa ...

  4. 使用Custom Draw优雅的实现ListCtrl的重绘

    common control 4.7版本介绍了一个新的特性叫做Custom Draw,这个名字显得模糊不清,让人有点摸不着头脑,而且MSDN里也只给出了一些如风的解释和例子,没有谁告诉你你想知道的,和 ...

  5. git学习------>在CenterOS系统上安装GitLab并自定义域名访问GitLab管理页面

    目前就职的公司一直使用SVN作为版本管理,现在打算尝试从SVN迁移到Git.安排我来预言并搭建好相关的环境以及自己尝试使用Git.今天我就尝试在Center OS系统上安装GitLab,现在在此记录一 ...

  6. Spark日志级别修改

    摘要 在学习使用Spark的过程中,总是想对内部运行过程作深入的了解,其中DEBUG和TRACE级别的日志可以为我们提供详细和有用的信息,那么如何进行合理设置呢,不复杂但也绝不是将一个INFO换为TR ...

  7. isEnable() 和 isDisplayed() 和 isSelected()

    isEnable().isDisplayed()和isSelected() 1.以上三个为布尔类型的函数 2.isEnable用于存储input.select等元素的可编辑状态,可以编辑返回true, ...

  8. session和token的区别

    session的使用方式是客户端cookie里存id,服务端session存用户数据,客户端访问服务端的时候,根据id找用户数据 而token一般翻译成令牌,一般是用于验证表明身份的数据或是别的口令数 ...

  9. 斩获新知——记一次reverse的实现过程

    最近学习C++,在实现reverse模板函数的时候,从一个小问题开始,在对这个问题的旁敲侧击当中带起了更多疑惑,顺藤摸瓜之后,尽管没有将诸多问题完美解答,但整个过程下来却也似有所获.最初的问题从使用C ...

  10. window7主题破解与恢复(复制)

    window7主题破解与恢复 1 2 3 分步阅读 windows7主题破解后可以换自己喜欢的主题,但也有一些弊端.这里帮助打家破解与恢复. 工具/原料 UniversalThemePatcher.e ...