读书人

Java:施用Executors创建和管理线程

发布时间: 2012-12-23 11:28:15 作者: rapoo

Java:使用Executors创建和管理线程
1. 类 Executors

此类中提供的一些方法有:
1.1 public static ExecutorService newCachedThreadPool()
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。

1.2 public static ExecutorService newFixedThreadPool(int nThreads)
创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。

1.3 public static ExecutorService newSingleThreadExecutor()
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。

这三个方法都可以配合接口ThreadFactory的实例一起使用。并且返回一个ExecutorService接口的实例。

2. 接口 ThreadFactory

根据需要创建新线程的对象。使用线程工厂就无需再手工编写对 new Thread 的调用了,从而允许应用程序使用特殊的线程子类、属性等等。
此接口最简单的实现就是:


这个线程会打印出相应的创建和执行信息。

4.2使用CachedThreadPool启动线程
CachedThreadPool.java
package com.zj.concurrency.executors;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import com.zj.concurrency.executors.factory.DaemonThreadFactory;import com.zj.concurrency.executors.factory.MaxPriorityThreadFactory;import com.zj.concurrency.executors.factory.MinPriorityThreadFactory; public class ExecFromFactory {    public static void main(String[] args) throws Exception {       ExecutorService defaultExec = Executors.newCachedThreadPool();       ExecutorService daemonExec = Executors              .newCachedThreadPool(new DaemonThreadFactory());       ExecutorService maxPriorityExec = Executors              .newCachedThreadPool(new MaxPriorityThreadFactory());       ExecutorService minPriorityExec = Executors              .newCachedThreadPool(new MinPriorityThreadFactory());       for (int i = 0; i < 10; i++)           daemonExec.execute(new MyThread(i));       for (int i = 10; i < 20; i++)           if (i == 10)              maxPriorityExec.execute(new MyThread(i));           else if (i == 11)              minPriorityExec.execute(new MyThread(i));           else              defaultExec.execute(new MyThread(i));    }}


本文出自 “子 孑” 博客,请务必保留此出处http://zhangjunhd.blog.51cto.com/113473/70068

读书人网 >编程

热点推荐