09 2019 档案
摘要:死锁发生的必要条件: 1、互斥条件 2、请求和保持条件 3、资源不剥夺条件 4、环路等待条件 多线程的最佳并发实践; 1、 使用本地变量 2、使用不可变类 3、最小化锁的作用域范围 : S = 1/(1-a+a/n) (阿木达尔定律) 其中,a为串行计算部分所占比例,n为并行处理结点个数。这样,当a
阅读全文
摘要:java中锁主要分为两类: 1、 synchronized 关键字修饰的锁 2、 在同步容器JUC中 ReentrantLock(可重入性) 关键字修饰的锁 ReenTrantLock 和 synchronized 的区别: 1、可重入性 ,两者都是一样的,当有线程进入锁,计数器就加1,当计数器为0
阅读全文
摘要:new Thread 弊端: 1、每次new Thread 新建对象,性能差 2、线程缺乏统一管理,可能无限制的新建线程,相互竞争,可能占用过多的系统资源导致死机或者OOM 3、缺少更多的功能,如更多执行、线程中断等 线程池--ThreadPoolExecutor corePoolSize: 核心线
阅读全文
摘要:CountDownLatch 实例代码: semaphore : 控制并发访问的线程个数 通过提供同步机制,来控制当前访问的线程个数 tryacquire: 尝试获取可用资源,如果获取不到就丢弃 cyclicBarrier: 使用场景和countDownLatch的使用场景很类似,但是可以循环的使用
阅读全文
摘要:并发 : 同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程交替的换入或者换出内存,这些线程是同时存在的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。 为什么需要cpu cache: cpu 的频率太快,快到
阅读全文
摘要:es 读数据过程 可以通过 doc id 来查询,会根据 doc id 进行 hash,判断出来当时把 doc id 分配到了哪个 shard 上面去,从那个 shard 去查询。 客户端发送请求到任意一个 node,成为 coordinate node。 coordinate node 对 doc
阅读全文