首页 > 代码库 > 线程--多线程线程池

线程--多线程线程池

 

最近在深入学习多线程方面的知识,关于多线程,我们在开发中常用到的是用线程池去处理各种业务逻辑

譬如 一段大的集合对象,想要快速的插入到数据库,我们可以循环插入,也可以用线程池的方式来同时插入

或者是 调用接口,每个对象一次次的调用接口 ,也可以使用多线程来调用接口

下面这段代码 可以处理这个问题

package com.demo;

import java.util.LinkedList;

import java.util.List;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.LinkedBlockingQueue;

import java.util.concurrent.ThreadPoolExecutor;

import java.util.concurrent.TimeUnit;

public class ThreadPool2 {

    public static void main(String[] args) {

        /**

         * 线程池数量

         */

        int corePoolSize = 10;

        /**

         * 最大线程池数

         */

        int maximumPoolSize = 100;

        //ExecutorService threadPool = new ThreadPoolExecutor(corePoolSize,maximumPoolSize, 30, TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>());

        ExecutorService threadPool =Executors.newFixedThreadPool(4);

        String dao = "dao";

        List<String> list = new LinkedList<String>();

        for (int i = 0; i < 10; i++) {

            list.add(i + "");

        }

        Task task = null;

        for (String str : list) {

            task = new Task(dao, str);

            threadPool.execute(task);

        }

        threadPool.shutdown();

    }

}

class Task implements Runnable {

    /**

     * 注入DAo

     */

    private String dao;

    /**

     * 注入BEAn

     */

    private String bean;

    public Task(String dao, String bean) {

        this.dao = dao;

        this.bean = bean;

    }

    public void run() {

        try {

            //TimeUnit.SECONDS.sleep(1);

            System.out.println("线程名称 :"+Thread.currentThread() +"--线程激活数量--"+Thread.activeCount()+"---");

            System.out.println(dao + "--插入到数据库中---" + bean);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

 

线程--多线程线程池