打赏

随笔分类 -  并发编程

摘要:线程池使用总结 Excutors工厂类 为了更好的控制更多的多线程,JDK提供返回一个固定数量的线程池。 方法: newFixedThreadPool()方法: 改方法返回一个固定数量的线程池,改方法的线程数,始终不变,当一个任务提交时,若线程池空闲,则立即执行,若没有,则会被暂缓在一个任务队列中等 阅读全文
posted @ 2018-12-17 04:44 JupiterMouse 阅读(305) 评论(0) 推荐(0)
摘要:多线程的上下文切换 参考自:https://www.cnblogs.com/szlbm/p/5505707.html 并发编程的目的是为了让程序运行得更快,充分的利用CPU,但是并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常 阅读全文
posted @ 2018-12-17 04:36 JupiterMouse 阅读(587) 评论(0) 推荐(0)
摘要:锁总结 悲观锁 总是假设最坏的情况,每次对数据操作都认为其它数据可能修改。在整个数据处理过程之中,将数据处于锁定状态。 应用: 1. 数据库的锁机制(读锁、行锁、写锁等),数据库中实现是对数据记录操作前给记录加排他锁。如果获取锁失败,则说明数据库正在修改,则等待或者抛出异常。如果 2. synchr 阅读全文
posted @ 2018-12-17 04:35 JupiterMouse 阅读(346) 评论(0) 推荐(0)
摘要:如何使用好线程池? 线程个数大小的设置 线程池相关参数的配置 利用Hook嵌入你的行为 线程池的关闭 线程池数量的设置,你的依据是什么? 计算机密集型 应用需要非常多的CPU计算资源,避免过多的线程上下文切换 线程数 = CPU核数+1,已可以设置为CPU核数 2,还要看JDK的版本以及CPU配置( 阅读全文
posted @ 2018-12-17 04:34 JupiterMouse 阅读(248) 评论(0) 推荐(0)
摘要:并发Queue 并发队列在JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪一种都会继承Queue接口。 ComcurrentLinkedQueue ComcurrentLinkedQueue:是 阅读全文
posted @ 2018-12-17 04:31 JupiterMouse 阅读(613) 评论(0) 推荐(0)
摘要:AQS原理探究 AQS维持了一个单一的原子变量 state,通过getState、setState、compareAndSetState可以操作它的值。 对于重入锁ReentrantLock的实现来说,state可以用来表示当前线程获取锁的可重入次数 对于读写锁ReentrantReadWriteL 阅读全文
posted @ 2018-12-17 04:27 JupiterMouse 阅读(299) 评论(0) 推荐(0)
摘要:Vetor、HashTable 同步类容器都是安全的,但是在某些场景下可能需要加锁来保护复合操作 这些容器的同步功能都是由JDK的 Collections.synchronized 等工厂方法实现的 其底层机制是用 synchronized 关键字对每个公用方法都进行同步,或者使用 Objext m 阅读全文
posted @ 2018-08-08 02:16 JupiterMouse 阅读(167) 评论(0) 推荐(0)
摘要:modCount ? 在ArrayList,LinkedList,HashMap等等的内部实现增,删,改中我们总能看到modCount的身影,modCount字面意思就是修改次数 可以发现一个公共特点,所有使用modCount属性的全是线程不安全的 。 iterator(or listiterato 阅读全文
posted @ 2018-08-08 01:47 JupiterMouse 阅读(184) 评论(0) 推荐(0)
摘要:CopyOnWrite CopyOnWrite简称COW,是一种程序设计中的优化策略。 JDK里COW容器有两种: CopyOnWriteArrayList CopyOnWriteArraySet COW容器非常有用,可以在非常多的并发场景中使用 使用场景, 读多写少 的时候, 容量 不大时(Cop 阅读全文
posted @ 2018-08-02 09:55 JupiterMouse 阅读(492) 评论(0) 推荐(0)