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