
大厂面试
文章平均质量分 80
大厂面试知识点学习
吴法刚
从现在我下了一个决定把自己学习过的东西都写成文章发表出来,大家共同学习共同探讨,知识无边界。。欢迎交流技术
展开
-
08_线程池
08_线程池前言Callable接口ThreadPoolExecutor**为什么用线程池****线程池的好处**架构说明创建线程池底层实现线程池的重要参数拒绝策略线程池底层工作原理问题二: 线程池使用过吗?谈谈在生产上如何设置的参数?线程池的拒绝策略你谈谈?线程池(Java中有哪些方法获取多线程)问题一: 线程池使用过吗? ThreadPoolExucutor 谈谈理解?前言获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口实现Runnable接口实现Callable接口原创 2022-12-03 22:58:21 · 343 阅读 · 0 评论 -
09_Future 升级版CompletableFuture
CompletableFuture对Future的改进比较简单不赘述了CompetableFuture和线程池说明原创 2022-07-03 09:05:36 · 144 阅读 · 0 评论 -
08_线程池,居然帮助帮朋友面试过了
线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。原创 2022-02-19 12:51:11 · 371 阅读 · 0 评论 -
ThreadLocal那点事
今天看自己项目中的代码遇到一个ThreadLocal,平时没遇到过,于是我决定自己好好去查查资料,这个是干嘛用的1、ThreadLocal是什么从名字我们就可以看到ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。从字面意思来看非常容易理解,但是从实际使用的角度来看,就没那么容易了,作为一个面试常问的点,使用场景那也是相当的丰富:1、原创 2021-03-28 11:13:41 · 141 阅读 · 0 评论 -
07_阻塞队列相关理论知识学习 BlockingQueue
07_阻塞队列相关理论知识学习 BlockingQueue1.概念队列阻塞队列为什么要用?为什么需要BlockingQueue2.BlockingQueue 相关的apiBlockingQueue核心方法抛出异常组布尔类型组阻塞队列组不见不散组SynchronousQueue阻塞队列的用处生成者和消费者3.0Synchronized和Lock的区别举例1.概念队列队列就可以想成是一个数组,从一头进入,一头出去,排队买饭阻塞队列BlockingQueue 阻塞队列,排队拥堵,首先它是一个队列,而一个原创 2020-09-26 21:30:38 · 157 阅读 · 0 评论 -
06_CountDownLatch/CyclicBarrier/Semaphore
1. CountDownLatch概念让一些线程阻塞直到另一些线程完成一系列操作才被唤醒CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程就会被阻塞。其它线程调用CountDown方法会将计数器减1(调用CountDown方法的线程不会被阻塞),当计数器的值变成零时,因调用await方法被阻塞的线程会被唤醒,继续执行场景现在有这样一个场景,假设一个自习室里有7个人,其中有一个是班长,班长的主要职责就是在其它6个同学走了后,关灯,锁教室门,然后走人,因此班长是原创 2020-09-26 21:30:14 · 180 阅读 · 0 评论 -
05_一文学明白java锁
Java锁之公平锁和非公平锁概念公平锁是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列非公平锁是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直得不到锁)如何创建并发包中ReentrantLock的创建可以指定析构函数的boolean类型来得到公平锁或者非公平锁,默认是非公平锁/*** 创建一个可重入锁,true 表示公平锁,f原创 2020-09-26 21:29:43 · 213 阅读 · 0 评论 -
04_集合类线程不安全问题
Collection线程不安全的举例单线程环境和多线程下效果如何单线程环境的ArrayList是不会有问题的@Test public void test1(){ //单线程是没问题问题的 我们非常熟悉 List<String> list = new ArrayList<>(); list.add("dd"); list.add("aa"); list.add("bb"); l原创 2020-08-29 16:55:14 · 456 阅读 · 0 评论 -
03_LongAdder 源码分析
03_LongAdder 源码分析AtomicLong 和 LongAdder对比AtomicLongLongAdderLongAdder和AtomicLong性能测试LongAdder为什么这么快1、 设计思想上,LongAdder采用**"分段"的方式降低CAS失败的频次**2、**使用Contended注解来消除伪共享****3、惰性求值**LongAdder源码剖析上文中我们分析了:CAS底层实现是在一个死循环中不断地尝试修改目标值,直到修改成功。如果竞争不激烈的时候,修改成功率很高,否则失败率很原创 2020-09-26 06:40:41 · 230 阅读 · 0 评论 -
02_CAS底层原理
概念CAS的全称是Compare-And-Swap,它是CPU并发原语它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作,再次强调,由于CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中原创 2020-08-27 06:16:22 · 689 阅读 · 0 评论 -
01_一文对Volatile深度理解
谈谈对Volatile的理解一个面试题进行展开的知识点相关知识:JUC(java.util.concurrent)进程和线程进程:后台运行的程序(我们打开的一个软件,就是进程)线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线程)并发和并行并发:同时访问某个东西,就是并发并行:一起做某些事情,就是并行JUC下的三个包java.util.concurrentjava.util.concurrent.atomicjava.util.concurren原创 2020-09-22 07:11:39 · 174 阅读 · 0 评论