随笔分类 -  并发

摘要:队列和阻塞队列 队列 队列(Queue)是一种经常使用的集合。Queue 实际上是实现了一个先进先出(FIFO:First In First Out)的有序表。和 List、Set 一样都继承自 Collection。它和 List 的区别在于,List可以在任意位置添加和删除元素,而Queue 只 阅读全文
posted @ 2023-03-02 23:47 雪山上的蒲公英 阅读(869) 评论(0) 推荐(0) 编辑
摘要:记录之前的一次优化过程,之前发布在wiki上,现摘出发布。 0.前言 主要查询表为还款计划表xx_plan(近4000w,日新增10~20w)、实还记录表xx_actual(2600w+,日新增5~10w)、代偿记录表xx_compensation(近200w,日新增1w)。目前查询超时原因主要是表 阅读全文
posted @ 2022-12-13 23:08 雪山上的蒲公英 阅读(1133) 评论(0) 推荐(0) 编辑
摘要:转自:https://www.cnblogs.com/chengxiao/p/7141160.html 1. 简介 Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如ReentrangLock、Semaphore,它们的实现都用到了一个共同的基类--Abstrac 阅读全文
posted @ 2020-11-08 23:51 雪山上的蒲公英 阅读(456) 评论(0) 推荐(0) 编辑
摘要:1. HashMap继承体系 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {} 结合下面的类继承关系图,可以看出HashMap的主要作用: HashMa 阅读全文
posted @ 2020-11-02 03:52 雪山上的蒲公英 阅读(143) 评论(0) 推荐(0) 编辑
摘要:线程池任务运行的主流程如下: 线程池调用execute提交任务—>创建Worker(设置属性thead、firstTask)—>worker.thread.start()—>实际上调用的是worker.run()—>线程池的runWorker(worker)—>worker.firstTask.ru 阅读全文
posted @ 2020-11-01 13:34 雪山上的蒲公英 阅读(3033) 评论(1) 推荐(1) 编辑
摘要:1. 简介 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 降低资源消耗 。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度 。当任务到达时,任务可以不需要等到线程创建就能立即执行 阅读全文
posted @ 2020-11-01 01:06 雪山上的蒲公英 阅读(407) 评论(0) 推荐(0) 编辑
摘要:转自:https://www.jianshu.com/p/8a58d8335270 1. 并发编程领域的关键问题 1.1 线程之间的通信 线程的通信是指线程之间以何种机制来交换信息。在编程中,线程之间的通信机制有两种,共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间 阅读全文
posted @ 2020-07-28 13:38 雪山上的蒲公英 阅读(298) 评论(0) 推荐(0) 编辑
摘要:volatile是Java虚拟机提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级。 volatile具有三大特性: 保证可见性 不保证原子性 禁止指令重排序 1. JMM(Java 阅读全文
posted @ 2020-07-27 01:14 雪山上的蒲公英 阅读(711) 评论(0) 推荐(0) 编辑
摘要:在分布式系统中,为保证同一时间只有一个客户端可以对共享资源进行操作,需要对共享资源加锁来实现,常见有三种方式: 基于数据库实现分布式锁 基于 Redis 实现分布式锁 基于 Zookeeper 实现分布式锁 高并发下数据库锁性能太差,本文不做探究。仅针对Redis 和 Zookeeper 实现的分布 阅读全文
posted @ 2020-05-24 02:00 雪山上的蒲公英 阅读(3995) 评论(0) 推荐(8) 编辑
摘要:1. 通过Executors创建线程池的弊端 在创建线程池的时候,大部分人还是会选择使用Executors去创建。 下面是创建定长线程池(FixedThreadPool)的一个例子,严格来说,当使用如下代码创建线程池时,是不符合编程规范的。 ExecutorService fixedThreadPo 阅读全文
posted @ 2019-07-22 20:28 雪山上的蒲公英 阅读(10638) 评论(4) 推荐(14) 编辑
摘要:业务中,要实现数据日终同步,采用将同步文件中的数据封装成List集合分批处理加多线程的方式,根据数据量动态设置线程数,同时控制最大并发数量(业务中有IO操作,避免过大并发导致堵塞),实现效率提高 //最大线程数控制 private static int MAX_THREADS= 5; //跑批分页大 阅读全文
posted @ 2019-06-21 22:47 雪山上的蒲公英 阅读(6771) 评论(0) 推荐(0) 编辑
摘要:流量限制(rate-limiting),是Nginx中一个非常实用,却经常被错误理解和错误配置的功能。我们可以用来限制用户在给定时间内HTTP请求的数量。请求,可以是一个简单网站首页的GET请求,也可以是登录表单的POST请求。 流量限制可以用作安全目的,比如可以减慢暴力密码破解的速率。通过将传入请 阅读全文
posted @ 2019-06-08 17:12 雪山上的蒲公英 阅读(2012) 评论(0) 推荐(0) 编辑
摘要:ArrayList 不是线程安全的,这点很多人都知道,但是线程不安全的原因及表现,怎么在多线程情况下使用ArrayList,可能不是很清楚,这里总结一下。 1. 源码分析 查看 ArrayList 的 add 操作源码如下: /** * Appends the specified element t 阅读全文
posted @ 2019-01-07 01:31 雪山上的蒲公英 阅读(20442) 评论(4) 推荐(13) 编辑

/* 返回顶部代码 */
点击右上角即可分享
微信分享提示