【Java学习笔记】ThreadPoolExecutor 基本概念入门
2011-09-04 16:59
771 查看
一、资源
1、 一篇线程池的入门级别的demo
http://www.cublog.cn/u2/70285/showart_1936084.html
2、挺详细的,用的是一样的demo
http://blog.csdn.net/waterbig/article/details/4794244
二、分析
看了一些线程和线程池的资料,自己动手看看
前期:
整个代码就改了两个地方
1、为了观察方便
2、这条比较有用,对Queue的操作和策略了解很有用
运行:
基本的一些概念,核心,最大,策略,并行
当前策略: ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 4, 3,
TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3),
new ThreadPoolExecutor.AbortPolicy());
参数:core:2 max:4 workQueue: ArrayBlockingQueue 有界队列,大小为3 策略:抛异常
运行结果:
这里看出:1、2->新建线程,3、4、5入队列,6,7->新建线程,按照策略,8,9,10被拒绝,报错,之后,从队列取出任务,用空闲的线程执行3,4,5.
根据策略的说明,若是
1、 一篇线程池的入门级别的demo
http://www.cublog.cn/u2/70285/showart_1936084.html
2、挺详细的,用的是一样的demo
http://blog.csdn.net/waterbig/article/details/4794244
二、分析
看了一些线程和线程池的资料,自己动手看看
前期:
整个代码就改了两个地方
1、为了观察方便
// 便于观察,等待一段时间 System.out.println("thread %s sleep "+Thread.currentThread().getName()); Thread.sleep(produceTaskSleepTime);
2、这条比较有用,对Queue的操作和策略了解很有用
// 处理一个任务,这里的处理方式太简单了,仅仅是一个打印语句 System.out.println("start .." + threadPoolTaskData+"@"+Thread.currentThread().getName());
运行:
基本的一些概念,核心,最大,策略,并行
当前策略: ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 4, 3,
TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3),
new ThreadPoolExecutor.AbortPolicy());
参数:core:2 max:4 workQueue: ArrayBlockingQueue 有界队列,大小为3 策略:抛异常
运行结果:
这里看出:1、2->新建线程,3、4、5入队列,6,7->新建线程,按照策略,8,9,10被拒绝,报错,之后,从队列取出任务,用空闲的线程执行3,4,5.
根据策略的说明,若是
ThreadPoolExecutor.DiscardOldestPolicy,应该是3,4,5被抛弃,而执行8,9,10.运行证实。
相关文章推荐
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.8-4.1.9)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.11-4.1.12)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.1)
- Java 学习笔记(基本概念)
- CoreJava学习笔记1-基本概念、对象和类
- 【转载】【时序约束学习笔记1】Vivado入门与提高--第12讲 时序分析中的基本概念和术语
- java学习笔记00-java的基本概念
- JavaScript入门学习笔记(1)—— 基本概念
- Java的面向对象编程基本概念学习笔记整理
- Java学习课堂笔记——面向对象程序设计的基本概念
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.3)
- Java网络编程学习笔记(1)——基本网络概念
- java学习笔记(1)基本概念之成员
- Hadoop学习笔记-大数据开发 入门 初学者 基本概念
- Oracle RAC学习笔记:基本概念及入门 02
- Oracle RAC学习笔记:基本概念及入门
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.6-4.1.7)
- java学习笔记(2)基本概念之面向对象大纲
- [知了堂学习笔记]_Java多线程(1)-- 基本概念并开始创建多线程程序
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.2)