您的位置:首页 > 编程语言 > Java开发

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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: