![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发面试题
秋心拆两半_
这个作者很懒,什么都没留下…
展开
-
Java面试题集锦(17):垃圾回收算法和垃圾回收器
文章目录前言1. GC垃圾回收算法和垃圾回收器的关系?2. 怎么查看服务器默认的垃圾回收器是哪个?3. Java的GC回收的类型主要有?(1)GC约定参数说明(2)Server/Client模式是什么意思?4. Java的GC回收器详情?(1)Serial Copying(2)ParNew(3)Parallel Scavenge(4)Parallel Compacting(Parallel Old)(5)CMS(6)Serial MSC(Serial Old)(7)G1生产上如何配置/选择垃圾回收器的?谈谈原创 2020-12-26 20:31:13 · 209 阅读 · 0 评论 -
Java面试题集锦(16):讲一下对OOM的认识
文章目录前言前言OOM抛出的error有(包括但不限于):(下列异常都是java.lang. 开头,比如java.lang.StackOverFlowError)栈溢出:StackOverFlowError堆溢出:OutOfMemoryError- OutOfMemoryError:java heap space- OutOfMemoryError:GC overhead limit exceeded- OutOfMemoryError:Direct buffer memory- Out原创 2020-12-25 19:53:09 · 166 阅读 · 0 评论 -
Java面试题集锦(15):Java的四种引用
Java的四种引用整体结构强引用软引用弱引用虚引用引用队列整体结构强引用和运用队列都继承于Object,软弱虚继承于强引用。强引用当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收。在Java中最常见的就是强引用,把一个对象赋值给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到JVM也不会回收。因此强引用是造成Java内存泄漏的主要原因之一。对于一个普通原创 2020-12-24 22:40:33 · 210 阅读 · 1 评论 -
Java面试题集锦(14):平时工作用过的JVM常用基本配置参数?
文章目录基础知识:基础知识:JDK1.8之后将最初的永久代取消了,由元空间取代。元空间的本质和永久代类似,元空间(Java8)与永久代(Java7)之间最大的区别在于:永久代使用的是JVM堆内存,而Java8之后的元空间并不在虚拟机中而是使用本季的物理内存。因此,默认情况下,元空间的大小仅受本地内存限制。类的元数据放入native memory,字符串池和类的静态变量放入java堆中,这样可以加在多少类的元数据并不再由MaxPermSize(永久区的大小)控制,而是由系统的实际可用空间来控制。(注:原创 2020-12-24 01:00:52 · 112 阅读 · 1 评论 -
Java面试题集锦(13):JVM调优和参数配置,请问如何盘点查看JVM系统默认值
文章目录JVM的参数类型1.标配参数2.x参数3.xx参数(重点)(1)Boolean类型(开启/关闭)(2)KV设值类型(Key-Value键值对)(3)jinfo举例,如何查看当前运行程序的配置(4)题外话4.JVM盘点家底查看初始默认值第一种方法:第二种方法:-Xms-Xmx 这两个最好一致-Xss(待整理)https://blog.csdn.net/longgeqiaojie304/article/details/93973438JVM的参数类型1.标配参数从JDK1.0到Java1原创 2020-12-22 20:54:19 · 146 阅读 · 0 评论 -
Java面试题集锦(7.2):阻塞队列的用途
生产者消费者模式原创 2020-12-18 17:40:52 · 84 阅读 · 0 评论 -
Java面试题集锦(6):CountDownLatch/CyclicBarrier/Semaphore的使用
CountDownLatchlatch:门闩、插销、碰锁、弹簧锁;如果没有CountDownLatchclass Scratch { public static void main(String[] args) { for(int i=0;i<6;i++){ new Thread(()->{ System.out.println(Thread.currentThread().getName()+"\t 完成")原创 2020-12-16 10:42:59 · 257 阅读 · 1 评论 -
Java面试题集锦(7.1):阻塞队列
阻塞队列有没有好处?不得不阻塞时应该如何管理?Thread1是生产线程,Thread2是消费线程。当阻塞队列为空时,从队列中获取元素的操作将会被阻塞;当阻塞队列是满时,从队列里添加元素的操作将会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其它线程往空队列插入新元素。试图往已满的阻塞队列中添加新元素的线程也会被阻塞,值到其他的线程从队列中移除一个或多个元素,或者完全清空队列后使队列重新变得空闲起来并后续新增。BlockingQueue的好处?在多线程领域,所谓阻塞,在某些情况下会原创 2020-12-17 20:46:26 · 193 阅读 · 2 评论 -
Java面试题集锦(8):Callable接口和Runnable接口
1.Callable接口和Runnable接口的不同点class myThread1 implements Runnable{ @Override public void run() { }}class myThread2 implements Callable<Integer>{ @Override public Integer call() throws Exception { return null;原创 2020-12-19 11:38:45 · 210 阅读 · 1 评论 -
Java面试题集锦(11):JVM的沙箱安全模型
转载:java中的安全模型(沙箱机制)转载 2020-12-20 17:09:25 · 392 阅读 · 2 评论 -
Java面试题集锦(12):JVM垃圾回收确定垃圾+是否知道什么是GC Roots?
什么是垃圾?简单来说就是内存中已经不再被使用到的空间。如何判断是否成为垃圾?1. 引用计数法Java中,引用和对象是有关联的,如果要操作对象必须是通过引用进行。因此,最简单的办法是通过引用计数来判断一个对象是否可以回收。给对象中添加一个引用计数器,每当有一个地方引用它,计数器的值就加1。每当有一个引用失效,计数器值减1。任何时刻计数器值为0的对象就是不可能再被使用的,那么这个对象就是可回收对象。缺点:很难解决对象之间的相互循环引用问题。public class ReferenceCounti原创 2020-12-20 12:13:22 · 70 阅读 · 2 评论 -
Java面试题集锦(10):死锁编码及定位分析
死锁是什么?死锁是????️两个或两个以上的进程在执行过程中,因争抢资源而造成的一种互相等待现象 ,在无外力干涉时,永远无法推进下去。如果系统资源充足,进程的资源请求都能得到满足,死锁出现的可能性很低,否则就会因争夺有限的资源而陷入死锁。产生死锁的主要原因:系统资源不足,进程运行推进的顺序不合适,资源分配不当。死锁Democlass HoldThread implements Runnable{ private String lockA; private String lockB;原创 2020-12-20 11:15:59 · 83 阅读 · 4 评论 -
Java面试题集锦(5):公平锁/非公平锁/可重入锁/递归锁/自旋锁的理解,并手写自旋锁。
一、公平锁、非公平锁公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。*官方:*在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列中的第一个,就占有锁,否则就会加入到等待队列中,以后会按照FIFO的规则从队列中,直到轮到自己。非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或者饥饿现象。*官方:*上来就直接尝试占有锁,如果尝试失败,就再采用类似公原创 2020-12-15 12:21:17 · 146 阅读 · 0 评论 -
Java面试题集锦(9):线程池的使用
1. 为什么用线程池,优势是什么?线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程就会排队等候,等其它线程执行完毕,再从队列中取出任务来执行。主要特点:线程复用,控制最大并发数,管理线程主要优点:降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性,线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,原创 2020-12-19 21:36:20 · 158 阅读 · 1 评论