《Java并发》:第四节 线程池
来源:互联网 发布:windows怎么换桌面 编辑:程序博客网 时间:2024/06/13 20:33
1、Java中的线程池
java API提供了三种线程池Executors.newCachedThreadPool(),Executors.newFixedThreadPool(.),Executors.newSingleThreadExecutor(),一般情况下我们都可以使用这里定义的线程池来完成我们的任务。
2、定制线程池
查看Executors.newCachedThreadPool()的源代码我们可以知道,通过自己new ThreadPoolExecutor我们可以通过传入不同的参数来定制自己的线程池。
代码一:
public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); }上面的代码还有一个重载方法,除了接受上面例子中的参数外,还可以额外接受一个ThreadFactory threadFactory参数。
代码二:
public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory) { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(), threadFactory); }从代码一我们知道,通过自己new ThreadPoolExecutor可以定制线程池的属性。
从代码二我们知道,通过实现自己的ThreadFactory我们可以定制产生线程的方式。
下面我们实现一个总是产生后台线程的线程池
class MyExecutors{/** * 设置线程池的属性,并且传入我们自己的线程工厂 */public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory) { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 120L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(), threadFactory); }}/** * 创建线程的工厂,设置线程的属性 */class MyThreadFactory implements ThreadFactory{@Overridepublic Thread newThread(Runnable r) {Thread t = new Thread(r);t.setDaemon(true);t.setPriority(Thread.MAX_PRIORITY);return t;}}class TaskTest implements Runnable{@Overridepublic void run() {System.out.println(Thread.currentThread().isDaemon());}}public class ThreadPoolTest { public static void main(String[] args) { ExecutorService exec = MyExecutors.newCachedThreadPool(new MyThreadFactory()); exec.execute(new TaskTest()); exec.shutdown(); }}上述程序会在控制台输出true,表明我们成功定制了线程池生产出来的线程的属性。
0 0
- 《Java并发》:第四节 线程池
- java并发编程第四章 线程执行器(1)
- java并发编程第四章 线程执行器(2)
- java并发编程第四章线程执行器(3)
- java并发编程第四章 线程执行器(4)
- java并发编程第四章 线程执行器(5)
- 【Java】并发之线程池
- 【Java】并发之线程池
- java并发编程:线程池
- Java并发编程:线程池
- Java并发编程 线程池
- java并发编程---线程池
- Java并发编程:线程池
- JAVA 并发基础-线程池
- java并发之线程池
- java并发-线程池总结
- Java并发编程:线程池
- 【Java并发编程】线程池
- 从零开始-边学边做-塔防游戏-七彩三国(七)--SDL--全红屏幕2
- 【Node】node的模块
- NERD tree Mappings
- Number theory
- C语言内存管理
- 《Java并发》:第四节 线程池
- 【MoreWindows工作笔记12】WM_DRAWCLIPBOARD 监视剪切板
- 性能优化杂谈
- UI_涂鸦作业
- 将 Hadoop YARN 发扬广大
- Timus 1513 Lemon Tale
- IO流__【对象的序列化】【管道流】【RandomAccessFile】【DataStream】【ByteArrayStream等】
- Shell编程基础
- 南邮-1950-比赛现场气氛营造问题