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

java 多线程之Executors.newFixedThreadPool

2016-07-03 11:46 323 查看
//生成线程池最大3个并发线程

ExecutorService executorService = Executors.newFixedThreadPool(3);

for(BookDO bookDO : Books){

    //多线程执行子任务

    executorService.submit(new BookCollector(bookDO, EagleEye.getRpcContext());

}

//不再接收新的线程入队列

executorService.shutdown();

//等待所有的线程执行完毕,如果timeout返回false

if(!executorService.awaitTermination(30, TimeUnit.SECONDS)){

    //取消还未完成的任务线程

    executorService.shutdownNow();

}

public class BookCollector implements Runnable{
    private BookDO bookDO;
    private Object ctx;

    public RouteCollector(BookDO bookDO, Object ctx){
        this.bookDO = bookDO;
        this.ctx = ctx;
    }

    @Override
    public void run() {

        try{

            EagleEye.setRpcContext(ctx);

            //业务逻辑处理方法

            doCollectBook(this.bookDO);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            EagleEye.clearRpcContext();
        }
    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程 线程池