并发编程
文章平均质量分 68
成长之旅
我想带你见证自己的成长之旅,沿途可能有美丽的风景,也可能有完颜炯奇,这正是这趟旅行的美丽之处。
展开
-
多线程下SimpleDateFormat为什么报错?
我们有一个工具类提供了一个简单的解析方法:代码如下class SimpleDateFormatTest implements Runnable { private static final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void run() { try { tr...原创 2021-09-06 11:09:31 · 500 阅读 · 0 评论 -
线程池中创建多少线程合适
通俗一点,如何让你的系统处理更快,(降低延迟,提高吞吐量)。对应方法进本两个方向,一个算法,另一个将硬件性能发挥极致。 提升性能就是,提升硬件的利用率。也就是提升i/o的利用率和cpu的利用率。你线程池的创建线程条数直接影响你系统的性能。思考问题一,分工产生效能在单核cpu时代,假如你用多线程的话,主要就是用来平衡cpu和I/O设备,如果你的程序只设计cpu计算,没有I/O操作的话,多线程不但不会提升性能,还会是性能变的更差,原因就是线程的切换成本。我给你举个例子,你公司就你..原创 2020-06-18 09:31:58 · 477 阅读 · 0 评论 -
CyclicBarrier从小栗子来理解线程同步
我们生活中有这样一个情景,任务一是创建订单,任务二是派单,当任务一,和任务二完成之后进行核对账款操作,你可以抽象成任务一,和任务二完成之后通知任务三(核对账款)去完成。如下图所示:这里需要注意的是,因为两个线程分别执行任务一,任务二。我们必须抱着任务一,任务二同步。假如一个快,一个慢的话分别进入队列那我们再去核账没有意义。因为这笔派单和能上一个订单。贴上代码:import java.util.Vector;import java.util.concurrent.*;.原创 2020-05-21 13:30:50 · 145 阅读 · 0 评论 -
CompletionService批量执行异步任务
假如有很多个异步任务需要执行我们因该怎么办,这里我们可以试一下CompletionService,废话不多说直接上代码。注:假设我们要三个异步任务task1,task2,task3。 以及saveDb入库方法,这三个方法谁先执行完,谁先把结果存入数据库。import java.util.ArrayList;import java.util.List;import java.util.concurrent.*; public static void main(Strin..原创 2020-05-20 13:38:08 · 189 阅读 · 0 评论 -
并发编程FutureTask快速上手Demo
首先看一下下边这段代码,很简单直接拿去跑一下,注释也很全。有两种方式分别是线程池执行和Trhead执行import java.util.concurrent.*;public class JxdFutureTask { public static void main(String[] args) throws ExecutionException, InterruptedException { FutureTask<String> futureTask = n.原创 2020-05-18 12:48:46 · 345 阅读 · 0 评论 -
ThreadPoolExecutor详细使用
值得注意的是尽量不要用,这种默认形式创建 线程池,结合自己的业务场景去做。Executors.newFixedThreadPool()比如默认的创建 队列会让默认这种 无界限LinkedBlockingQueue队列,可以自动扩容,但是遇到高并发的场景,扩容是非常慢的。非常浪费时间,import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger; public static v.原创 2020-05-17 16:44:01 · 321 阅读 · 0 评论