上一页 1 2 3 4 5 6 7 8 9 10 ··· 24 下一页

2018年8月31日

Java并发编程原理与实战四十一:重排序 和 happens-before

摘要: 一、概念理解 首先我们先来了解一下什么是重排序:重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。 从Java源代码到最终实际执行的指令序列,会分别经历下面3种重排序,如下图所示 上述的1属于编译器重排序,2和3属于处理器重排序。这些重排序可能会导致多线程程序出现内存可见性 阅读全文

posted @ 2018-08-31 18:43 pony1223 阅读(393) 评论(0) 推荐(0) 编辑

2018年8月29日

Java并发编程原理与实战四十:JDK8新增LongAdder详解

摘要: 传统的原子锁AtomicLong/AtomicInt虽然也可以处理大量并发情况下的计数器,但是由于使用了自旋等待,当存在大量竞争时,会存在大量自旋等待,而导致CPU浪费,而有效计算很少,降低了计算效率。 而LongAdder是根据ConcurrentHashMap这类为并发设计的类的基本原理——锁分 阅读全文

posted @ 2018-08-29 08:18 pony1223 阅读(898) 评论(0) 推荐(0) 编辑

Java并发编程原理与实战三十九:JDK8新增锁StampedLock详解

摘要: 1、StampedLock是做什么的? 》它是ReentrantReadWriteLock 的增强版,是为了解决ReentrantReadWriteLock的一些不足。 2、ReentrantReadWriteLock有什么不足之处呢? 》我们都知道,ReentrantReadWriteLock是读 阅读全文

posted @ 2018-08-29 08:12 pony1223 阅读(871) 评论(0) 推荐(0) 编辑

2018年8月24日

Java并发编程原理与实战三十八:多线程调度器(ScheduledThreadPoolExecutor)

摘要: 在前面介绍了java的多线程的基本原理信息:线程池的原理与使用 本文对这个java本身的线程池的调度器做一个简单扩展,如果还没读过上一篇文章,建议读一下,因为这是调度器的核心组件部分。 我们如果要用java默认的线程池来做调度器,一种选择就是Timer和TimerTask的结合:一个Timer为一个 阅读全文

posted @ 2018-08-24 08:15 pony1223 阅读(792) 评论(0) 推荐(0) 编辑

Java并发编程原理与实战三十七:线程池的原理与使用

摘要: 一、简介 线程池在我们的高并发环境下,实际应用是非常多的!!适用频率非常高! 有过使用过Executors框架的朋友,可能不太知道底层的实现,这里就是讲Executors是由ThreadPoolExecutor实现的。好的,让我们来看看ThreadPollExcutor是怎样实现的呢? 如果你想了解 阅读全文

posted @ 2018-08-24 08:14 pony1223 阅读(586) 评论(0) 推荐(0) 编辑

2018年8月23日

Java并发编程原理与实战三十六:阻塞队列&消息队列

摘要: 一、阻塞队列 1、阻塞队列BlockingQueue 》可以理解成生产者消费者的模式 》消费者要等待到生产者生产出来产品。 》而非阻塞队列ConcurrentLinkedQueue是非阻塞的,所以它取出来的时候可能为空。 2、注意使用BlockingQueue接口的时候。 add方法和remove方 阅读全文

posted @ 2018-08-23 08:14 pony1223 阅读(5753) 评论(0) 推荐(0) 编辑

2018年8月21日

Java并发编程原理与实战三十五:并发容器ConcurrentLinkedQueue原理与使用

摘要: 一、简介 offer和poll offer(E e) 将指定元素插入此队列的尾部。 poll() 获取并移除此队列的头,如果此队列为空,则返回 null。 offer是往队列添加元素,poll是从队列取出元素并且删除该元素 执行结果 ConcurrentLinkedQueue中的add() 和 of 阅读全文

posted @ 2018-08-21 08:16 pony1223 阅读(6343) 评论(1) 推荐(1) 编辑

2018年8月20日

Java并发编程原理与实战三十四:并发容器CopyOnWriteArrayList原理与使用

摘要: 1、ArrayList的实现原理是怎样的呢? 》例如:ArrayList本质是实现了一个可变长度的数组。 假如这个数组的长度为10,调用add方法的时候,下标会移动到下一位,当移动到70%左右的时候。会创建一个新数组,而这个新数组的长度变成2倍或3倍等等。将原来的数据复制到新数组中,新的内容会接着添 阅读全文

posted @ 2018-08-20 08:30 pony1223 阅读(465) 评论(0) 推荐(0) 编辑

2018年8月19日

Java并发编程原理与实战三十三:同步容器与并发容器

摘要: 1、什么叫容器? 》数组,对象,集合等等都是容器。 2、什么叫同步容器? 》Vector,ArrayList,HashMap等等。 3、在多线程环境下,为什么不用同步容器呢? 》1、线程不安全问题。2、线程安全的情况下,但是性能非常差问题。 Vector(线程安全,基本不用) 》ArrayList( 阅读全文

posted @ 2018-08-19 21:39 pony1223 阅读(210) 评论(0) 推荐(0) 编辑

Java并发编程原理与实战三十二:ForkJoin框架详解

摘要: 1、Fork/Join框架有什么用呢? 》Fork使用来切分任务,Join是用来汇总结果。举个简单的栗子:任务是1+2+3+...+100这个任务(当然这个任务的结果有好的算法去做,现在是用笨方法去计算这个结果)。 》适合在多核环境下,单核环境使用ForkJoin没什么意思。简单来说就是,一个任务切 阅读全文

posted @ 2018-08-19 21:37 pony1223 阅读(479) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 24 下一页

导航