- 博客(4)
- 资源 (4)
- 收藏
- 关注
原创 面试-多线程-synchronized和lock区别
分享一道多线程的高频面试题:synchronized和lock两种锁的区别 角度 synchronized lock 锁存在层次 在jvm层面上,Java的关键字 JUC下的一个接口,java.util.concurrent.locks.Lock 锁获取时机 假设A线程获得锁,B线程等待。如以尝试获得锁,线程可以不用一直等待(可以通过 视情况而定,Lock有多个锁获取的方式,大致就是可以尝试获得锁,线程可以不用一直
2021-03-13 10:27:20 315
原创 面试-多线程-线程安全活跃态问题以及竞态条件
线程安全是多线程永久的话题,也是最核心的问题之一,本章从线程安全活跃态、竞态条件,以及常见问题简单阐述一下! 线程安全的活跃性问题可以分为 死锁、活锁、饥饿三种,下面逐一说明: 1、活锁状态: 活锁 就是有时线程虽然没有发生阻塞,但是仍然会存在执行不下去的情况,活锁不会阻塞线程,线程会一直重复执行某个相同的操作,并且一直失败重试。 开发中使用的异步消息队列就有可能造成活锁的问题,在消息队列的消费端如果没有正确的ack消息,并且执行过程中报错了,就会再次放回消息头,然后再拿出来执行,一直循环往复的失
2021-03-10 11:42:56 686 2
原创 面试-多线程-如何避免死锁
死锁是多线程和并发编程不可规避的话题之一。 如何避免死锁,其实是考察我们对死锁的了解,包括什么是死锁、产生死锁的条件,当了解前面的两个问题,这个问题也就迎刃而解了! 首先需要将死锁发生的是个必要条件讲出来: 互斥条件: 同一时间只能有一个线程获取资源。 不可剥夺条件:一个线程已经占有的资源,在释放之前不会被其它线程抢占 请求和保持条件:线程等待过程中不会释放已占有的资源 循环等待条件: 多个线程互相等待对方释放资源 死锁预防,那么就是需要破坏这四个必要条件: 由于资源互斥是资源使用的固有特性,
2021-03-10 10:44:50 412 1
原创 SystemGC完全解读
目录 1、System.gc的概述 2、JDK里的System.gc的实现 3、Hotspot里System.gc的实现 4、并行Full GC相对正常的Full GC效率高在哪里 5、堆外内存常配合使用System GC 1、System.gc的概述 JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我们都可以写篇文章来做一个介绍,本文重点介绍下Sys
2021-03-04 22:28:16 410 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人