JAVA并发
handsome-h
慈不掌兵,情不立事,义不理财,善不为官。
展开
-
乐观锁和悲观锁
文章目录基本概念实现方式CAS(Compare And Swap)版本号控制优缺点和适用场景功能限制竞争激烈程度补充乐观锁加锁吗?CAS有哪些缺点? 基本概念 乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。 乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执...原创 2019-08-10 15:13:52 · 321 阅读 · 0 评论 -
synchronized 关键字
文章目录介绍使用底层原理synchronized 同步语句块的情况synchronized 修饰方法的的情况JDK1.6之后synchronized关键字底层优化synchronized和ReentrantLock 的区别两者都是可重入锁synchronized 依赖于 JVM 而 ReentrantLock 依赖于 APIReentrantLock 比 synchronized 增加了一些高级功...原创 2019-08-10 22:36:29 · 559 阅读 · 0 评论 -
volatile关键字
文章目录Java内存模型synchronized 关键字和 volatile 关键字的区别 Java内存模型 在 JDK1.2 之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。 而在当前的 Java 内存模型下,线程可以把变量保存本地内存比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用...原创 2019-08-10 22:44:13 · 320 阅读 · 0 评论 -
ThreadLocal
文章目录简介示例原理内存泄漏问题 简介 通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢? JDK中提供的ThreadLocal类正是为了解决这样的问题。 ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。 如果你创建了一个Thr...原创 2019-08-12 10:01:43 · 394 阅读 · 0 评论 -
线程池
文章目录为什么要用线程池?实现Runnable接口和Callable接口的区别执行execute()方法和submit()方法的区别是什么呢?如何创建线程池通过构造方法实现通过Executor 框架的工具类Executors来实现 为什么要用线程池? 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。 这里借用《Java并发编程的艺术》提...原创 2019-08-12 10:19:51 · 322 阅读 · 0 评论 -
Atomic 原子类
文章目录介绍JUC 包中的原子类是哪4类?基本类型数组类型引用类型对象的属性修改类型AtomicInteger 的使用AtomicInteger 类的原理 介绍 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。 原子类说简单点就是具有原子/原子操作特征的类。 并发包 java.util.concurrent 的原子类都存放在java....原创 2019-08-12 10:29:16 · 650 阅读 · 0 评论 -
AQS
文章目录介绍原理AQS 原理概览AQS 对资源的共享方式AQS底层使用了模板方法模式AQS 组件总结 介绍 AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。 AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semapho...原创 2019-08-12 11:06:50 · 1069 阅读 · 0 评论