首页 > 代码库 > 线程--多线程线程池
线程--多线程线程池
最近在深入学习多线程方面的知识,关于多线程,我们在开发中常用到的是用线程池去处理各种业务逻辑
譬如 一段大的集合对象,想要快速的插入到数据库,我们可以循环插入,也可以用线程池的方式来同时插入
或者是 调用接口,每个对象一次次的调用接口 ,也可以使用多线程来调用接口
下面这段代码 可以处理这个问题
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();
}
}
}
线程--多线程线程池