![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程池
forever_together
过自己想要的生活,自由自在...
展开
-
2021-05-19
一直认为这个没起作用,其实是自己理解错了。很可能是这个任务里面去执行了多线程任务,这里的concurrent是只针对本身,不针对这个任务里面的多线程任务。如果本身里面的任务是单线程的话,那么就会是按照一个执行完了再执行下一个。多线程的话就是另外一种情况了。...原创 2021-05-19 10:07:00 · 149 阅读 · 0 评论 -
数据库连接池
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:.原创 2021-04-23 09:37:22 · 101 阅读 · 0 评论 -
线程池多线程如果有任务出现异常,怎么统计成功的个数
工作中使用到了CountDownLatch countDownLatch =new CountDownLatch (20);让线程池去跑20个任务,如果不管有无异常,run()方法都必须有finally()方法,在finally方法里面执行 countDownLatch.countDown()让总任务数减少1.这样子的话就存在,外面使用countDownLatch.await()方法后,不知道具体成功了多少个任务。我暂时的解决方案是:countDownLatch.await()方法,再自己去数据库.原创 2021-04-21 16:58:01 · 946 阅读 · 0 评论 -
单线程化线程池newSingleThreadExecutor的关闭
现在工作中使用线程池的话,基本上都使用jdk自带的Executors类,我在一次开发当中使用到了单线程化线程池(newSingleThreadExecutor),单线程化线程池(newSingleThreadExecutor)的优点,串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。但是我在开发中是这样子做的,有20个任务,我代码像下面这样子写的,有点性能问题,该任务执行完毕后,系统多了20个无用的线程池。原创 2021-04-21 15:21:23 · 2569 阅读 · 0 评论 -
怎么保证在多线程任务都执行完后再执行某一动作 CountDownLatch
在开发过程当中,我们使用了多线程来异步执行多任务,但是我们想在这些任务执行完成后,才接着再执行的话,就需要使用到CountDownLatch这个类了。首先我们需要知道被执行任务的个数,比如这里是有20个任务,那么CountDownLatch latch = new CountDownLatch(20);然后在创建任务的时候,把latch带进去,在该任务的run()方法执行完毕后,需要执行latch.countDown()方法。这个countDown()方法就标识这个任务执行完了,总的数量会减1.原创 2021-04-21 14:37:19 · 3764 阅读 · 0 评论