-
JUC-04-Striped64
数据 striping
在计算机数据存储中,数据条带化是分割逻辑顺序数据(例如文件)的技术,以便连续的段存储在不同的物理存储设备上。
当处理设备比单个存储设备提供数据更快地请求数据时,条带化非常有用。 通过在可以同时访问的多个设备上分布段,增加了总数据吞吐量。
它也是平衡磁盘阵列中I/O负载的有用方法。
条带化用于独立磁盘冗余阵列(RAID)存储中的磁盘驱动器,网络接口控制器,集群文...
2019-01-20 06:10:12 |
Concurrency
-
JUC-03-LongAdder
LongAdder
LongAdder中会维护一个或多个变量,这些变量共同组成一个long型的“和”。当多个线程同时更新(特指“add”)值时,为了减少竞争,可能会动态地增加这组变量的数量。“sum”方法(等效于longValue方法)返回这组变量的“和”值。
当我们的场景是为了统计技术,而不是为了更细粒度的同步控制时,并且是在多线程更新的场景时,LongAdder类比AtomicLon...
2019-01-20 06:10:12 |
Concurrency
-
JUC-02-AtomicLong 使用入门及源码详解
AtomicLong 介绍
可以原子更新的 Long 值。
AtomicLong用于诸如原子递增的序列号之类的应用程序中,并且不能用作Long的替代品。
但是,此类确实扩展了Number,以允许通过处理基于数字的类的工具和实用程序进行统一访问。
API
直接查阅 JDK Doc
AtomicLong 与 Long 的区别
这两个对象之间存在显着差异,虽然最终结果是相同的,但...
2019-01-20 06:10:12 |
Concurrency
-
JUC-02-AtomicInterger 原子性整型源码详解
AtomicInterger 介绍
可以原子性更新的 Integer 值,当然这个类并不能完全替代 Integer 对象。
使用
使用起来还是很方便的。
比如说我们定义一个计数器,使用 AtomicInteger 可以同时兼顾性能与并发安全。
import java.util.concurrent.atomic.AtomicInteger;
/**
* @author bi...
2019-01-20 06:10:12 |
Concurrency
-
JUC-02-AtomicReference 对象原子性更新
AtomicReference 介绍
可以原子性更新的引用值。
源码学习
类定义
AtomicReference 和 AtomicInteger 比较类似。
都有 Unsafe 属性,和一个对应的值偏移量。
区别就是此处的 value 是通过 volatile 关键字修饰的变量。
public class AtomicReference<V> implements ...
2019-01-20 06:10:12 |
Concurrency
-
JUC-01-Atomic 原子性
原子性
原子是世界上的最小单位,具有不可分割性。
比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作。
再比如:a++; 这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那么我们称它具有原子性。...
2019-01-20 06:10:12 |
Concurrency
-
JUC-00-JUC 目录,java 集合汇总
JUC
java.util.concurrent 是 java 为并发提供的强大的工具包。
本文将整理学习常见的类,API,适用场景,源码。
重点是类本身,并发和 jmm 将在其他系列学习。
Arrays
Array是Java特有的数组。在你知道所要处理数据元素个数的情况下非常好用。java.util.Arrays 包含了许多处理数据的实用方法:
Arrays.asList:可以...
2019-01-20 06:10:12 |
Concurrency
-
轻松学习多线程三高系列-03-Thread pool 线程池
什么是线程池
为了避免重复的创建线程
线程池的出现可以让线程复用 通俗的讲 当有任务来的时候 就会像线程池里面拿一个线程 当工作完成后 不是关闭线程 而是归还线程到线程池中
这样避免了重复开销 这样就会节省性能和时间
多次创建线程的劣势
服务器需要接受并处理请求所以会为一个请求来分配一个线程来进行处理
如果每次请求都新创建一个线程的话
十分方便但是会存在一些问题:
...
2019-01-19 03:21:15 |
Thread