面试
辰小诺
一个小菜鸟
展开
-
Volatile是什么?
Volatile是什么?volatile 是 Java 虚拟机提供的轻量级的同步机制,拥有以下三大特性:保证可见性不保证原子性禁止指令重排JMM(Java内存模型) JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成素组对象的元素)...原创 2019-08-12 09:46:39 · 192 阅读 · 0 评论 -
ABA问题
ABA问题ABA问题怎么产生的 CAS会导致"ABA"问题。 CAS算法实现的一个重要前提需要拉取出内存中某时刻的数据并在当下时刻比较并替换,那么这个时间差会导致数据的变化。比如说一个线程t1从内存位置V取出A,这时候另一个线程t2也行内存中取出A,并且线程t2进行了一些操作将值变为了B,然后线程t2又将V位置的数据变为A,这时候线程t1进行CAS操作发现内存中仍然是A,然后线程...原创 2019-08-19 16:00:45 · 105 阅读 · 0 评论 -
集合类不安全
集合类不安全/** * 集合类不安全问题 * ArrayList * HasHsET * @author chenxiaonuo * @date 2019-08-12 11:00 */public class ContainerNotSafeDemo { public static void main(String[] args) { Map<S...原创 2019-08-19 16:04:26 · 131 阅读 · 0 评论 -
Java 中的锁你知道哪些?
Java 中的锁你知道哪些?公平和非公平锁公平锁 是指多个线程申请锁的顺序来获取锁,类似排队,先来后到。 在并发环境中,每个线程在获取锁时会查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则就会加入到等待队列中,以后会按照FIFO的规则从队列中取到自己。非公平锁 是指多个线程获取锁的顺序不是按照申请锁的顺序,有可能后申请的线程比先...原创 2019-08-19 16:05:54 · 609 阅读 · 0 评论 -
CountDownLatch/CyclicBarrier/Semaphore 使用过吗?
CountDownLatch/CyclicBarrier/Semaphore 使用过吗?CountDownLatch让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其他线程调用countDown方法会将计算器减1(调用countDown方法的线程不会阻塞),当计算器的值变为零时,因调用a...原创 2019-08-19 16:07:04 · 206 阅读 · 0 评论 -
阻塞队列知道吗?
阻塞队列知道吗?阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。 当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,知道其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程从列中移除一个或...原创 2019-08-19 16:15:14 · 231 阅读 · 0 评论 -
线程池用过吗?
线程池用过吗?线程池优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。主要特点:线程复用、控制最大并发数、线程管理。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创...原创 2019-08-19 16:18:36 · 472 阅读 · 0 评论 -
死锁编码及定位分析
死锁编码及定位分析 死锁是指两个或两个以上的进行在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那么他们将无法推进下去,如果系统资源充足,进程的资源请求都能得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。产生死锁的主要原因系统资源不足进程运行推进的顺序不合适资源分配不当定位分析public class DeadLockDemo { ...原创 2019-08-19 16:19:51 · 152 阅读 · 0 评论 -
CAS是什么?
CAS是什么? CAS的全称是Compare-And-Swap,它是一条CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。 CAS并发原语体现在Java语言中就是sun.misc.Unsafe类中的各个方法。调用Unsafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令。这是一种完全依赖于硬件的功能,通过它实现了原子操作。再...原创 2019-08-12 09:52:29 · 553 阅读 · 0 评论