
面试-并发
Huntermax25
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java面试题——多线程问题及答案
一、多线程的几种实现方式,什么是线程安全。四种:继承Thread类,实现Runnable接口,实现Callable接口,使用线程池。线程安全:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。(Java并发编程实战)最核心的概念是正确性。正确性:某个类的行为与其规范完全一致。二、volatile的原理,作用,能代替锁么。volatile的理解三、画一个...原创 2020-02-11 22:31:11 · 2538 阅读 · 0 评论 -
JAVA面试题——CountDownLatch/CyclicBarrier/Semaphore 使用过吗?
CountDownLatch让一些线程堵塞直到另一个线程完成一系列操作后才被唤醒。CountDownLatch 主要有两个方法,当一个或多个线程调用 await 方法时,调用线程会被堵塞,其他线程调用 countDown 方法会将计数减一(调用 countDown 方法的线程不会堵塞),当计数其值变为零时,因调用 await 方法被堵塞的线程会被唤醒,继续执行。类似生活场景:关门:等到商场里面...原创 2020-01-28 19:13:24 · 637 阅读 · 0 评论 -
JAVA面试题——死锁编码以及定位分析
死锁是什么死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种相互等待的现象,如果无外力的干涉那它们都将无法推进下去,如果系统的资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。死锁产生原因~系统资源不足~进程运行推进的不当~资源分配不当demo:public class DeadLockDemo { publi...原创 2020-01-28 19:04:15 · 294 阅读 · 0 评论 -
JAVA面试题——生产上如何配置合理参数
谈谈线程池的拒绝策略是什么等待队列已经满了,再也塞不下新的任务,同时线程池中的线程数达到了最大线程数,无法继续为新任务服务。拒绝策略AbortPolicy:处理程序遭到拒绝将抛出运行时 RejectedExecutionExceptionCallerRunsPolicy:线程调用运行该任务的 execute 本身。此策略提供简单的反馈控制机制,能够减缓新任务的提交速度。Discard...原创 2020-01-28 16:42:48 · 551 阅读 · 0 评论 -
JAVA面试题——对线程池的理解
文章目录为什么用线程池,它的优势是什么?线程池的底层分析底层架构编码实现源码和七个参数(五个参数)底层原理为什么用线程池,它的优势是什么?可以装X的方式,使用线程来看下电脑的核数:public class MyThreadPoolDemo { public static void main(String[] args) { System.out.println(Run...原创 2020-01-28 15:48:47 · 1487 阅读 · 0 评论 -
JAVA面试题——JUC多线程及并发常见问题目录
1、谈谈你对volitile的理解2、CAS你知道吗?3、原子类AtomicInteger的ABA问题谈谈?原子更新引用知道吗?4、ArrayList的线程不安全问题。5、各种锁。6、CountDownLatch/CyclicBarrier/Semaphore使用过吗?7、阻塞队列知道吗?8、线程池用过吗?ThreadPoolExecutor谈谈你的理解?9、线程池用过吗?生产上你...原创 2020-01-28 14:33:03 · 2226 阅读 · 0 评论 -
JAVA面试题——各种锁
文章目录公平锁非公平锁公平锁和非公平锁区别可重入锁(递归锁)自旋锁公平锁是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。在高并发的情况下,有可能造成优先级反转或者饥饿现象。公平锁和非公平锁区别ReentrantLock默认是非公平锁,但是可以设置为true成为公平锁,Sy...原创 2020-01-28 14:03:57 · 1586 阅读 · 1 评论 -
JAVA面试题——ArrayList线程不安全问题
故障现象java.util.ConcurrentModificationException并发修改异常导致原因并发争抢修改导致,一个正在写入,另一个过来抢夺,导致数据不一致异常,并发修改异常。解决方案1、new vector<>();问题:vector虽然保证了线程安全性,但是并发性性能下降。2、Collections.synchronizedList(new Array...原创 2020-01-28 13:54:53 · 761 阅读 · 0 评论 -
JAVA面试题——volatile的理解
文章目录一、简介(请你谈谈对volatile的理解)二、三大特性什么叫保证了可见性?禁止指令重排序不保证原子性三、哪里有用过volatile?一、简介(请你谈谈对volatile的理解)首先,volatile是Java虚拟机提供的轻量级的同步机制,他基本遵守了JMM的规范。二、三大特性volatile主要有三大特性:保证可见性,有序性(即禁止指令重排序),但是不保证原子性。什么叫保证了可...原创 2020-01-28 13:23:44 · 1272 阅读 · 0 评论 -
JAVA面试题——CAS原理
比较并交换,CPU并发原语。功能是判断内存某个位置的值是否为预期值,如果是则改为新的值,这个过程是原子的。CAS并发原语体现在JAVA语言中就是sun.misc.Unsafe类中的各个方法。...原创 2020-01-28 13:23:11 · 2282 阅读 · 1 评论 -
JAVA面试题——JMM内存模型
文章目录谈谈JMMJMM同步规定谈谈JMMJMM(java内存模型)Java Memory Model,本身是一个抽象的概念,不是真实存在的,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。JMM同步规定(1)线程解锁前,必须把共享变量的值刷新回主内存(2)线程加锁前,必须读取主内存的最新值到自己的工作内存(3)加锁解...原创 2020-01-28 13:19:44 · 2175 阅读 · 0 评论 -
Java面试题——Callable接口
文章目录一、Callable接口是创建多线程的方式之一二、Callable接口与Runnable接口的区别三、FutureTask实现类引申问题:那么既然有了Runnable接口,为什么还要Callable接口,谈一谈它的背景。四、获取futureTask的计算结果一、Callable接口是创建多线程的方式之一创建多线程的四种方式: 一、继承Thread类; 二、实现Runnable接口;...原创 2020-01-28 11:12:17 · 541 阅读 · 0 评论