摘要: LongAdder 提供了原子累计值的方法。 在高并发下N多线程同时去操作一个变量会造成大量线程CAS失败然后处于自旋状态,这大大浪费了cpu资源,降低了并发性。那么既然AtomicLong性能由于过多线程同时去竞争一个变量的更新而降低的,LongAdder思路把一个变量分解为多个变量,让同样多的线 阅读全文
posted @ 2019-07-20 01:31 曲阳阳 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 锁的内存语义 锁的释放与获取所建立的happen-before关系 锁的释放与内存语义 锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息 volatile的内存语义 volatile读写所建立的happens-before关系 volatile读写的内存语义 2.当写一个v 阅读全文
posted @ 2019-07-20 00:03 曲阳阳 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 什么是重排序 编译器和处理期为了提高程序的运行性能,对指令进行重新排序。 数据依赖性 as-if-serial 数据依赖性 1.写后读 2.读后写 3.写后写 指令重排序: 编译器重排序和处理器重排序 happens-before happen-before 是用来指定两个操作之间的执行顺序,提供跨 阅读全文
posted @ 2019-07-19 17:22 曲阳阳 阅读(144) 评论(0) 推荐(0) 编辑
摘要: Executor 它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助 阅读全文
posted @ 2019-07-19 12:08 曲阳阳 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 线程池 线程池线程池概述创建一个线程池并提交线程任务线程池源码解析参数认识构造方法提交任务addWorker执行任务关闭线程池 线程池线程池概述创建一个线程池并提交线程任务线程池源码解析参数认识构造方法提交任务addWorker执行任务关闭线程池 线程池概述 什么是线程池 为什么使用线程池 线程池的 阅读全文
posted @ 2019-07-19 10:25 曲阳阳 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 同步容器 性能差,线程不安全 Vector (线程安全)--> ArrayList(线程不安全) Vector 直接在方法上加同步,保证线程安全,不适用并发执行,性能损耗大 arrayList ArrayList<String> s = new ArrayList<>(); Collections. 阅读全文
posted @ 2019-07-18 18:11 曲阳阳 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 多线程的目的不仅仅是提高程序运行的性能,但是可以充分利用CPU资源 fork() 在当前线程运行的线程池中安排一个异步执行。简单的理解就是再创建一个子任务。 join() 当任务完成的时候返回 阅读全文
posted @ 2019-07-17 15:29 曲阳阳 阅读(189) 评论(0) 推荐(0) 编辑
摘要: FutureTask FutureTask可用于异步获取执行结果或取消执行任务的场景。通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过FutureTask的get方法异步获取执行结果. Callable() Futu 阅读全文
posted @ 2019-07-17 13:58 曲阳阳 阅读(542) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch CountDownLatch 允许一个或多个线程等待其他线程完成操作。 用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后 阅读全文
posted @ 2019-07-17 07:24 曲阳阳 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。 线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java 提供 Thread 阅读全文
posted @ 2019-07-15 16:36 曲阳阳 阅读(145) 评论(0) 推荐(0) 编辑