
线程安全
诸般世界
这个作者很懒,什么都没留下…
展开
-
001线程安全
线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。 synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为“互斥区”或“临界区”。 当多个线程访问myThread的run方法时,以排队的方式进行处理(这里排对是按照CPU分配的先后顺序而定的),一个线程...原创 2019-06-19 15:06:25 · 105 阅读 · 0 评论 -
002ThreadLocal概念
ThreadLocal线程局部变量,是一种多线程间并发访问变量的解决方案。与其synchronized等加锁的方式不同,ThreadLocal完全不提供锁,而使用以空间换时间的手段,为每个线程提供变量的独立副本,以保障线程安全。 从性能上说,ThreadLocal不具有绝对的优势,在并发不是很高的时候,加锁的性能会更好,但作为一套与锁完全无关的线程安全解决方案,在...原创 2019-06-19 15:18:11 · 177 阅读 · 0 评论 -
003 Synchronized及线程通信
同步:synchronized 同步的概念就是共享,我们要牢牢记住"共享"这俩个字,如果不是共享的资源,就没有必要进行同步。同步的目的就是为了线程安全,其实对于线程安全来说,需要满足俩个特性:原子性(同步),可见性。异步:asynchronized 异步的概念就是独立,相互之间不受到任何制约。就好像我们学习http的时候,在页面发起的Ajax请求,我们还可以...原创 2019-06-20 08:51:44 · 149 阅读 · 0 评论 -
004Volatile关键字
Volatile概念:Volatile关键字的主要作用是使变量在多个线程间可见。作用:1.在多线程间可以进行变量的变更,使得线程间进行数据的共享可见。2.阻止指令重排序,happens-beforepublic class UseVolatile extends Thread{ //为isRunning加上volatile关键字修饰,实现线程通讯过程中的数据共享...原创 2019-06-20 09:33:04 · 103 阅读 · 0 评论 -
005Atomic系列类
Atomic系列类封装了一系列的基础类型和对象操作,其主要目的就是为了实现原子性,可以在高并发时保障线程安全,主要核心类如下:•AtomicInteger•AtomicLong•AtomicBoolean•AtomicIntegerArray•AtomicLongArray•AtomicReferencepublic class UseAtomic { ...原创 2019-06-20 16:55:14 · 131 阅读 · 0 评论 -
006JDK Unsafe类使用与CAS原子特性
由于java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:•内存操作•字段的定位与修改•挂起与恢复•CAS操作(乐观锁)1.内存操作: 类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩充内存和释放内存,与C语言中的3个...原创 2019-06-20 22:05:12 · 323 阅读 · 0 评论