
并发编程
文章平均质量分 56
想飞起来的小小小飞鱼
不断学习的小透明
展开
-
AQS入门介绍
title: AQS入门介绍categories: 同步一、AQS的简单介绍 AQS的全称是AbstractQueuedSynchronizer ,这个类在 java.util.concurrent.locks 包下面 AQS是基于FIFO的队列实现的,并且内部维护了一个状态变量state,通过原子更新这个状态变量state即可以实现加锁解锁操作。 ReentrantLock,Semaphore,其他的如 CyclicBarrier ,CountDownLatch,FutureTask S.原创 2021-04-04 14:48:51 · 250 阅读 · 0 评论 -
看看ThreadLocal是什么,ThreadLocalRandom呢?
因为简历上写道了ThreadLocal,最近面试经常有被问到,决定把这两个知识点精简的做个笔记ThreadLocal:指的是线程私有的变量,通过set,get,remove等方法进行操作,对应的底层操作其实是ThreadLocalMap问题:1. ThreadLocalMap存的是什么ThreadLocal里的键值对,key是threadlocal的弱引用,value是我们存放的值2. ThreadLocalMap的key为什么是弱引用1. key 使用强引用:引用的ThreadLoca原创 2020-08-10 20:54:52 · 384 阅读 · 0 评论 -
来看看ConcurrentHashMap吧
1.. ConcurrentHashMap中没有负载因子和阈值吗 a. 是没有,改用了sizeCtl控制,0表示默认值,-1表示正在扩容,>0表示下一次扩容的门槛,-(1+nThreads)n个线程正在扩容,sizeCtl的变化都是CAS操作 2. 请讲讲ConcurrentHashMap的put操作? a. 控制key和value都不能为null b. 再用自旋+cas实现put过程,下面是具体的put c. 如果桶未初始化就初始化桶 d. 如果桶中还没有元素就把这个元素插进去,插入这原创 2020-07-02 11:55:47 · 249 阅读 · 0 评论 -
Unsafe函数六道面试题
1. Unsafe是什么? Java 无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM 还是开了一个后门,JDK 中有一个类 Unsafe,底层是使用C/C++写的,它提供了硬件级别的原子操作。Unsafe为我们提供了访问底层的机制,这种机制仅供java核心类库使用,而不应该被普通用户使用。 UnSafe的功能主要有:(1)实例化一个类;(2)修改私有...原创 2020-05-04 10:54:12 · 585 阅读 · 0 评论 -
深入理解volatile
深入理解volatile学习volatile的时候,已经看过synchronized了,synchronized可以锁定对象还可以保证可见性,而volatile是一种轻量级的synchronized,它保证了可见性阅读并发编程的艺术的时候看到了volatile保证可见性的原理,主要如下:当我们声明好了voilatile的变量,并对该其变量执行写操作的时候其汇编指令会多出第二行,这是一条Lo...原创 2019-11-22 14:58:15 · 200 阅读 · 0 评论