java线程池
2014-03-06 22:22
120 查看
package com.djk.thread; /** * 基础线程类模板 * @author whx * */ public abstract class BaseThread implements Runnable { private Object object; /** * 执行线程方法 */ @Override public void run() { run(object); } /** * 由子类实现 * @param object */ public abstract void run(Object object); public Object getObject() { return object; } public void setObject(Object object) { this.object = object; } } package com.djk.thread; /** * 线程1 * @author whx * */ public class Thread1 extends BaseThread { @Override public void run(Object object) { System.out.println("thread1"+(String)object); } } package com.djk.thread; /** * 线程2 * @author whx * */ public class Thread2 extends BaseThread { @Override public void run(Object object) { System.out.println("thread2"+(String)object); } } package com.djk.thread; /** *线程1的工厂 * @author whx * */ public class Thread1Factory implements IThreadFactory { @Override public BaseThread createThread() { return new Thread1(); } } package com.djk.thread; /** * 线程2的工厂 * @author whx * */ public class Thread2Factory implements IThreadFactory { @Override public BaseThread createThread() { return new Thread2(); } } package com.djk.thread; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 线程池管理类 * @author whx * */ public class ThreadPoolManager { /** * jdk线程池 */ private ThreadPoolExecutor threadPoolExecutor; /** * 线程工厂 */ private IThreadFactory iThreadFactory; /** * 构造器 * @param minSize * @param maxSize * @param time */ public ThreadPoolManager(int minSize,int maxSize,int time,IThreadFactory iThreadFactory) { this.iThreadFactory = iThreadFactory; threadPoolExecutor = new ThreadPoolExecutor(minSize, maxSize, time, TimeUnit.HOURS,new ArrayBlockingQueue<Runnable>(100)); } /** * 增加任务 */ public void addTask(Object object) { BaseThread baseThread = iThreadFactory.createThread(); baseThread.setObject(object); threadPoolExecutor.execute(baseThread); } } package com.djk.thread; public class ThreadClient { private static ThreadPoolManager thread1Pool; private static ThreadPoolManager thread2Pool; static { thread1Pool = new ThreadPoolManager(1, 2, 2, new Thread1Factory()); thread2Pool = new ThreadPoolManager(1, 2, 2, new Thread2Factory()); } public static void main(String[] args) { thread1Pool.addTask("djk1"); thread2Pool.addTask("djk"); } } package com.djk.thread; /** * 线程工厂 * @author whx * */ public interface IThreadFactory { BaseThread createThread(); }
相关文章推荐
- 简单的Java线程池
- Java四种线程池的使用
- 【java线程池】
- 【转】Java并发编程:线程池的使用
- Java线程池Executor框架
- Java 理论与实践: 线程池与工作队列
- Java线程:新特征-线程池
- Java中的线程创建,以及使用四种线程池对线程进行管理
- Java中有返回值的线程,(缓存)线程池的初步使用
- java自带线程池和队列详细讲解
- java 线程池
- Java 线程池 ThreadPoolExecutor 源码分析
- java中线程池的实现【原创】
- java语言基础(96)——线程池的使用
- java多线程6--线程池
- java六种线程池
- java四个线程池的实现
- Java 线程池
- java四种线程池的简单解释及举例
- Java定时任务的几种方法(Thread 和 Timer,线程池)