面试
文章平均质量分 52
Oasen
黑森林法则
展开
-
笔记H《JVM&GC》
文章目录JVMJVM 内存结构垃圾回收算法GC RootJVM参数配置查看当前运行程序的配置查看JVM默认值参数常见参数GC日志JVMJVM 内存结构垃圾回收算法引用计数复制标记清除标记整理GC Root什么是垃圾:内存中已经不在被使用到的空间就是垃圾,要进行垃圾回收,首先需要判断一个对象是否可以被回收。如何判断一个对象是否可以被回收:引用计数;Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回原创 2020-07-04 15:04:00 · 991 阅读 · 0 评论 -
笔记G《线程池》
文章目录Callable 接口Callable 演示线程池示例ThreadPoolExecutor线程池的工作原理handler 拒绝策略死锁Callable 接口Java创建线程的4中方式:继承Thread类:浪费仅有的一次继承机会实现Runnable接口:无返回值实现Callable接口:可以有返回值,可抛出异常,可中断通过线程池创建:线程复用,但是实际开发中应该自己实现线程池相对于Runnable接口而言,Callable接口的优势在于:判断线程任务是否完成或者被取消能够中断任原创 2020-07-04 01:22:23 · 301 阅读 · 0 评论 -
笔记F《阻塞队列》
文章目录阻塞队列BlockingQueue阻塞队列阻塞队列,首先是一个队列,而一个阻塞队列在数据结构中所起的作用大致如图:当阻塞队列是空,从队列中获取元素的操作将会被阻塞;当阻塞队列为满,往队列中添加元素的操作将会被阻塞。阻塞,在多线程环境中会挂起线程(线程阻塞),一旦条件满足,被挂起的线程会被自动唤醒。BlockingQueueBlockingQueue让我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程:继承树:ArrayBlockingQueue由数原创 2020-07-03 22:49:03 · 349 阅读 · 0 评论 -
笔记E《CountDownLatch/CyclicBarrier/Semaphore》
文章目录CountDownLatchCyclicBarrierSemaphoreCountDownLatch让一些线程阻塞直到另外一些完成后才被唤醒。CountDownLatch 主要有两个方法,当一个或多个线程调用 await方法时,调用线程会被阻塞.其他线程调用 countDown 方法计数器减1(调用 countDown 方法时线程不会阻塞),当计数器的值变为0,因调用await方法被阻塞的线程会被唤醒,继续执行。public class CountDownLatchDemo { pu原创 2020-07-03 20:16:45 · 178 阅读 · 0 评论 -
笔记D《公平锁/非公平锁/可重入锁/递归锁/自旋锁》
文章目录公平锁 & 非公平锁可重入锁(递归锁)自旋锁独占锁 & 共享锁公平锁 & 非公平锁公平锁公平锁是指多个线程按照申请所的顺序来获取,先来先得。在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列。如果为空,或者当前线程是等待队列的第一个,就占有锁,佛则就加入到等待队列中,按照 FIFO 的规则取出。非公平锁非公平锁是指在多线程获取锁的顺序并不是按照申请锁的顺序,而是一种抢占式的方式来获取锁。synchronized,ReentrantLock 都原创 2020-07-03 19:25:30 · 139 阅读 · 0 评论 -
笔记C《ArrayList线程安全》
ArrayList 线程安全ArrayList 是非线程安全的,如果强制在多进程中使用 ,将会报 ConcurrentModificationException 并发修改异常。使用 Vector,效率低下;使用 Collections.synchronizedList,实际返回了 SynchronizedList。在进行数据操作是,都加了 synchronized 锁来进行控制。使用 CopyOnWriteArrayList,该类会进行写时复制操作。CopyOnWrite容器即写时复制的容器。往一原创 2020-07-03 18:24:58 · 187 阅读 · 0 评论 -
笔记B《CAS》
文章目录CAS缺点ABA 问题CASCAS: compare and swap,比较并交换。先来看如下代码,原子类的写操作是先比较在设置。当且仅当对象偏移量V上的值和预期值A相等时,才会用更新值B更新V内存上的值,否则不执行更新。但是无论是否更新了V内存上的值,最终都会返回V内存上的旧值。public class CASDemo { public static void main(String[] args) { AtomicInteger atomicInteger = n原创 2020-07-03 17:20:33 · 264 阅读 · 0 评论 -
笔记A《volatile 的理解》
volatile 关键字原创 2020-07-03 16:22:44 · 640 阅读 · 0 评论