java自定义线程池

来源:互联网 发布:淘宝网窗帘罗马圈 编辑:程序博客网 时间:2024/04/28 02:36

线程池的优点:

1、减少创建和销毁线程的次数,每个线程可以重复使用,可以执行多个任务

2、可以降低系统资源的占用率

线程池其实就是将许多线程通过队列组合起来,每当有任务时,就会从队列中取出线程,让其工作。

ThreadPool类

public class ThreadPool {private int temp; private ThreadWork []tw;//保存任务的对象private LinkedList<Runnable> list=new LinkedList<Runnable>();/** * 构造函数,初始化线程池中的线程 * @param temp  线程池中的线程数 */public ThreadPool(int temp){this.temp=temp;tw=new ThreadWork[temp];//创建工作线程对象for(int i=0;i<temp;i++){ThreadWork work=new ThreadWork();tw[i]=work;tw[i].setName(i+"号线程");//调用start方法,会启动ThreadWork的run方法tw[i].start();}}//执行任务的方法public void execute(Runnable task){synchronized(list){//将任务添加到任务队列里list.add(task);list.notify();}}/** * 工作线程类 */private class ThreadWork extends Thread{public void run(){Runnable r;while(true){synchronized (list) {//如果任务队列为空,就等待if(list.isEmpty()){try {list.wait();} catch (InterruptedException e) {e.printStackTrace();}}r=list.removeFirst();//移除队列中第一个线程}r.run();}}}


有任务时,就去调用execute()方法,系统就会分配一个线程去处理;这个就是自定义线程池。

 

原创粉丝点击