Java线程池的简单使用

最近由于公司的业务需求,需要使用线程池来进行对数据进行处理,所以就简单的学习了一下线程池的东西,刚接触感觉挺难的,不过使用了就不感觉那么难了,还是蛮简单的,

package com.yd.sms.job;



import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.PropertyResourceBundle;

import java.util.ResourceBundle;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;



import org.apache.axis.components.threadpool.ThreadPool;

import org.hibernate.mapping.Array;



import com.yd.sms.api.local.SmsRunLocal;

import com.yd.sms.bean.entity.ActStatList;

import com.yd.sms.bean.local.ActStatListFacadeLocal;

import com.yd.sms.common.EJBHomeFactory;



/**

 *

 * @author allen.tang

 *

 */

public class SmsCleanJob {

    

    private final static  ExecutorService threadPool;  //线程池

    

    private static int maxThread;   //需要启动的最大线程数

    

    private static int maxSingletonThread;  //单个线程执行的任务数量

    

    static{

        ResourceBundle bundle = PropertyResourceBundle.getBundle("config");  //获取配置文件信息

        String maxThread_str = bundle.getString("threadPool_maxThread");

        String maxSingletonThread_str = bundle.getString("threadPool_maxSingletonThread");

        maxThread = Integer.valueOf(maxThread_str);

        maxSingletonThread = Integer.valueOf(maxSingletonThread_str);

        threadPool = Executors.newFixedThreadPool(maxThread);

    }

    

    /**

     * 执行

     */

    public void execute(){

        long startTime = System.currentTimeMillis();

        String[] names = new String[]{"a", "b", "c", "d", "e"};

        

        System.out.println("********开始进入线程池");

        for(int i = 0; i < names.length; i ++){

                threadPool.submit(new SmsCleanThread(names[i]));

        }

        long endTime = System.currentTimeMillis(); //由于公司的业务要求每个几秒就会有一批数据进来,所以这里在后面没有关闭线程池

        System.out.println("********已经退出线程池:总共耗时:"+((endTime - startTime)/ 1000.0)+"秒");

        System.out.println("========线程池已经执行结束!");

    }

    

    



    /**

     * 线程

     * @author allen.tang

     *

     */

    class SmsCleanThread implements Runnable{



    private String str;

        

        public SmsCleanThread(String  str){

            this.str = str;

        }



        public void run() {

                System.out.print(str+"执行中。。。");

            

            }

            

        }

        

    }

    

    



}

我这里所使用的是已经被封装好的线程池,所以挺简单的,不过这个也是用的最多的一个,在一开始的时候启动确定数量的线程,方便调用。

 

你可能感兴趣的:(java线程池)