一个简单的线程池实现
来源:互联网 发布:jquery 对象转json 编辑:程序博客网 时间:2024/05/16 23:42
public class ThreadPool {private AtomicInteger maxSize;private BlockingQueue<Runnable> taskQueue;private List<TaskThread> threads=null;private static ThreadPool instance =null;private static Lock lock=new ReentrantLock();private ThreadPool(int maxSize){this.maxSize=new AtomicInteger(maxSize);threads=new ArrayList<TaskThread>();this.taskQueue=new LinkedBlockingDeque<Runnable>();initThread();}private void initThread(){for(int i=0;i<this.maxSize.get();i++){TaskThread thread=new TaskThread();threads.add(thread);thread.start();}}public static ThreadPool getInstance(int maxSize){lock.lock();try{if(instance==null){instance =new ThreadPool(maxSize);}return instance;}finally{lock.unlock();}}public boolean submitJob(Runnable runable){taskQueue.add(runable);return true;}private class TaskThread extends Thread{@Overridepublic void run() {while(true){try {Runnable run=taskQueue.take();run.run();} catch (InterruptedException e) {e.printStackTrace();}}}}public static void main(String[] args) {ThreadPool pool=ThreadPool.getInstance(10);for(int i=0;i<100;i++){pool.submitJob(new Thread() {public void run() {System.out.println(this.currentThread().getName());try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});}}}
0 0
- 一个线程池的简单的实现
- 一个简单的线程池的实现
- 一个简单的线程池的实现
- 一个简单的线程池实现
- 一个简单线程池的实现
- 一个C++线程池的简单实现
- 一个简单线程池的实现
- 一个简单的线程池实现
- Java实现一个简单的线程池
- 一个简单的java线程池实现
- 一个简单线程池的实现
- 一个简单线程池的实现
- 一个简单的线程池实现
- 一个简单的线程池实现
- 一个简单的线程池实现
- 一个简单的线程池的实现(C++)
- 使用common-pool实现的一个简单的线程池
- 使用common-pool实现的一个简单的线程池
- 本地安装SVN(win10)
- day21_IO流
- day22_IO流
- scala学习(一)认识scala
- day23_IO流
- 一个简单的线程池实现
- day24_多线程
- day25_多线程
- Hystrix 使用与分析
- day26_网络编程
- 理解angularjs中的$emit,$broadcast和$on
- Mac添加mybatis generator插件
- [AHK]用Scite运行ahk脚本,脚本中输出Scite的进程编号
- day27_反射