定制并发类(五)在一个Executor对象中使用我们的ThreadFactory
来源:互联网 发布:天猫美工工资 编辑:程序博客网 时间:2024/05/19 03:19
声明:本文是《 Java 7 Concurrency Cookbook 》的第七章,作者: Javier Fernández González 译者:许巧辉
在一个Executor对象中使用我们的ThreadFactory
在前面的指南中,实现ThreadFactory接口生成自定义线程,我们引进了工厂模式和提供如何实现一个实现ThreadFactory接口的线程的工厂例子。
执行者框架(Executor framework)是一种机制,它允许你将线程的创建与执行分离。它是基于Executor、ExecutorService接口和实现这两个接口的ThreadPoolExecutor类。它有一个内部的线程池和提供一些方法,这些方法允许你提交两种任务给线程池执行。这两种任务是:
- 实现Runnable接口的类,用来实现没有返回结果的任务
- 实现Callable接口的类,用来实现有返回结果的任务
在执行者框架(Executor framework)的内部,它提供一个ThreadFactory接口来创建线程,这是用来产生新的线程。在这个指南中,你将学习如何实现你自己的线程类,用一个工厂来创建这个类的线程,及如何在执行者中使用这个工厂,所以这个执行者将执行你的线程。
准备工作…
阅读之前的指南,实现ThreadFactory接口生成自定义线程,并实现它的例子。
这个指南的例子使用Eclipse IDE实现。如果你使用Eclipse或其他IDE,如NetBeans,打开它并创建一个新的Java项目。
如何做…
按以下步骤来实现的这个例子:
1.将实现ThreadFactory接口生成自定义线程的指南中实现的MyThread、MyThreadFactory和MyTask类复制到这个项目中,所以你将在这个例子中继续使用它们。
2.实现这个例子的主类,通过创建Main类,并实现mian()方法。
1
public
class
Main {
2
public
static
void
main(String[] args)
throws
Exception {
3.创建一个新的MyThreadFactory对象,名为threadFactory。
1
MyThreadFactory threadFactory=
new
MyThreadFactory(
"MyThreadFactory"
);
4.使用Executors类的newCachedThreadPool()方法,创建一个新的Executor对象。传入前面创建的工厂对象作为参数。这个新的Executor对象将使用这个工厂创建必需的线程,所以它将执行MyThread线程。
1
ExecutorService executor=Executors.newCachedThreadPool(threadFactory);
5.创建一个新的Task对象,并使用submit()方法将它提交给执行者。
1
MyTask task=
new
MyTask();
2
executor.submit(task);
6.使用shutdown()方法关闭这个执行者。
1
executor.shutdown();
7.使用awaitTermination()方法,等待执行者的结束。
1
executor.awaitTermination(
1
, TimeUnit.DAYS);
8.写入一条信息表明程序的结束。
1
System.out.printf(
"Main: End of the program.\n"
);
它是如何工作的…
在前面指南(实现ThreadFactory接口生成自定义线程)中的它是如何工作的部分中,你可以阅读到关于MyThread、MyThreadFactory和MyTask工作的详细解释。
在这个例子的main()方法中,你已使用Executors类的newCachedThreadPool()方法创建一个Executor对象。你已传入之前创建的工厂对象作为参数,所以已创建的Executor对象将使用这个工厂来创建它所需的线程,并且它将执行MyThread类的线程。
执行这个程序,你将看到关于线程的开始日期和它的执行时间的信息。以下截图显示了这个例子产生的输出:
原文地址:http://ifeve.com/customizing-concurrency-classes-5/
- 定制并发类(五)在一个Executor对象中使用我们的ThreadFactory
- 定制并发类(四)实现ThreadFactory接口生成自定义的线程
- 定制并发类(四)实现ThreadFactory接口生成自定义的线程
- Java Executor并发框架(三)ThreadFactory介绍
- Java Executor并发框架(五)ExecutorService
- 并发编程(五):Executor框架
- java并发编程中常用的工具类 Executor
- 使用Executor代替手动的线程调度(java并发编程读书笔记五)
- ThreadFactory, ExecutorService的简单使用
- Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion
- 在hibernate中查询使用List,Map和类对象定制返回类型
- 在hibernate中查询使用List,Map和类对象定制返回类型
- 在hibernate中查询使用List,Map和类对象定制返回类型
- Java并发编程-05-使用ThreadFactory创建新线程
- java并发基础(三)--- 任务执行(Executor的使用)
- 并发编程高级部分(Executor框架/线程池的使用)
- C++里,我们通过在一个类中重载括号运算符的方法使用仿函数
- [Java并发]Java中Executor框架(四)
- FatMouse'trade
- SnmpSharpNet OctetString DateAndTime自定义解析
- 天池_阿里音乐流行趋势预测大赛(1) —— 赛题分析
- JAVA--简单记事本
- js点击图片放大效果ImageZoom代码下载
- 定制并发类(五)在一个Executor对象中使用我们的ThreadFactory
- 百度地图简单定位
- 关于android Sdk23不兼容HttpEntity解决
- [leetcode-341]Flatten Nested List Iterator(java)
- C#面试问答总结1
- 笔记一:关于在Windows环境下使用cmd向mysql数据库中导入.sql数据表文件
- (二) P - P Save Luke 【数学】
- Linux学习总结(2)——linux常用命令大全
- session、cookie与“记住我的登录状态”的功能的实现