
java并发编程
文章平均质量分 79
技术王老五
这个作者很懒,什么都没留下…
展开
-
synchronized块使用string作为锁遇到的问题以及代码原理
要处理多个订单,并对相同订单号的订单进行数量统计,思路是加锁不同的订单号不进行加锁,相同的订单号串行执行。代码如下:public class LockDemo { private static ConcurrentHashMap<String,Integer> total = new ConcurrentHashMap<>(); public static void main(String[] args) throws InterruptedExcept原创 2021-03-02 16:45:09 · 1336 阅读 · 4 评论 -
JAVA使用并行流(ParallelStream)使用中的坑
public class TestParallelStream { public static void main(String[] args) { printFun(); } public static void printFun() { List<Integer> integersList = new ArrayList<>(); for (int i = 0; i < 100; i++) { .原创 2021-02-20 17:46:30 · 4711 阅读 · 2 评论 -
跑批设计-如何才能让跑批更加高速
跑批的应用场景在开发过程中跑批经常使用的地方:消息类:到期失效以及到期批量通知客户 计算类:在财务中的罚息、计提、计息 文件类:对账信息、还款信息同步以及报表生成跑批数据特点数据量非常大 实时性并不是特别高,有比较宽裕的时间处理问题 性能要求并不是特别高,要求在跑批中的隐患数据量非常大,有时会全部读写到内存开销较大批量循环更新数据库一整个事务贯穿始终多个节点操作时,设计的缺点导致只会命中一个节点操作数据,导致其他节点资源浪费优化思考数据量比较大的思路:1.原创 2021-02-04 23:41:04 · 1590 阅读 · 1 评论 -
线程池执行以及回收原理(二)
在线程池执行以及回收原理(一)主要讲述了线程在执行过程中的创建以及如何获取task任务,下面主要讲述如何将创建出的工作线程进行回收线程回收原创 2021-01-22 17:56:55 · 561 阅读 · 0 评论 -
线程池执行以及回收原理(一)
线程池状态参数//存放线程的状态以及worker数量,int是32位,高3位是线程的状态位,低29位线程worker数量private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));// 29private static final int COUNT_BITS = Integer.SIZE - 3;//判断worker数量的位移基数,高3位为0,低29位为1private static final int CA原创 2021-01-17 20:23:16 · 906 阅读 · 0 评论 -
Disruptor初探(一)
在java并发编程中我们经常会使用new ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory,RejectedExecutionHandler handler)来创建多线程的实例,其中corePoolSize:核心线程数,maximumP原创 2020-06-12 17:34:46 · 297 阅读 · 0 评论