简单线程池使用
Posted eian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单线程池使用相关的知识,希望对你有一定的参考价值。
高并发多线程插入数据写法示例
使用方法
// 固定声明10个线程
private ExecutorService executorService = Executors.new FixedThreadPool(10);
private ThreadPoolExecutor executor = (ThreadPoolExecutor)executorService;
// 使用队列插入数据,后面如果改造成批处理之类的也好执行
private LinkedBlockingDeque<DataModel> queue = new LinkedBlockingDeque<DataModel>();
private void insertRecord(DataModel dataModel)
queue.add(queryModel);
InsertRecordThread task = new InsertRecordThread(jjgExamQuesLoadDao, queue);
executor.execute(task);
// 这里不用executor.shutdown(),关闭线程池 , 因为线程池一直开着,没有就不会启用,用就可以直接执行, 不要将线程池关闭。
线程执行类
public class InsertRecordThread implements Runnable
private JjgExamQuesLoadDao jjgExamQuesLoadDao;
private LinkedBlockingDeque<DataModel> queue;
public InsertRecordThread(JjgExamQuesLoadDao jjg , LinkedBlockingDeque<DataModel> queue)
this.jjgExamQuesLoadDao = jjg;
this.queue = queue;
public void run()
try
DataModel event = queue.poll();
jjgExamQuesLoadDao.insertAnswerRecord(event);
catch(Exception e)
e.printStackTrace();
- 到此项目结束, 之前因为不太会用多线程,总感觉会出现问题,不敢用,其实用多了,考虑周全也没什么问题, 而且效率还会大大提升。
以上是关于简单线程池使用的主要内容,如果未能解决你的问题,请参考以下文章