并发编程[27]

面试官:ThreadLocal 有内存泄漏的风险,是怎么发生的呢?了解在这个过程的,探测式清理和启发式清理吗?

概述 ThreadLocal 在 Java 中被用来提供线程局部变量。每个线程都可以通过其 ThreadLocal 变量获取它自己的值,这在线程隔离的上下文中是非常有用的。然而,ThreadLocal 确实存在内存泄漏的风险,这主要与其内部实现和生命周期管理有关。 内存泄露 内存泄漏风险的发生 En

面试官问我synchronized、volatile,有什么区别呀?只用 synchronized 修饰方式,能保证可见性吗?

前言 有个小伙伴被问到volatile 和 synchronized 二者的区别,这是一个常常被问到的题目用于检验你对Java并发编程的理解,了解你对Java并发编程基础知识的掌握程度,以及你是否能够清晰地理解并解释这两个关键字的区别。同时,他们也可能想要评估你在实际编程中如何选择合适的同步机制来解

Java 并发编程 面试题及答案整理,最新面试题

Java中的volatile关键字有什么作用? volatile关键字在Java中的作用包括:

【面试题120】你能说清楚分布式锁,进程锁,线程锁的区别吗?

在分布式集群系统的开发中,线程锁往往并不能支持全部场景的使用,必须引入新的技术方案分布式锁。 线程锁,进程锁,分布式锁 线程锁:大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法/代码块时,同一时

【面试题113】一文搞定那些难缠的并发面试题

1、Object 的 wait()和notify() 方法 下图为线程状态的图: Object 对象中的 wait()和notify()是用来实现实现等待 / 通知模式。其中等待状态和阻塞状态是不同的。等待状态的线程可以通过notify() 方法唤醒并继续执行,而阻塞状态的线程则是等待获取新的锁。

【面试题109】谈谈在项目中,如何应对高并发流量

前言 应对大流量的一些思路 限流的常用方式 限流神器:Guava RateLimiter 分布式场景下的限流 前言 在实际项目中,曾经遭遇过线上5W+QPS的峰值,也在压测状态下经历过10W+QPS的大流量请求,本篇博客的话题主要就是自己对高并发流量控制的一点思考。 应对大流量的一些思路 “

面试官:如何设计一个高并发系统?

面试题 如何设计一个高并发系统? 面试官心理剖析 面试官对高并发系统的深入询问,实际上是对求职者专业技能和经验的精准检验。在许多公司发布的职位描述(JD)中,高并发经验被视作一项重要的加分项,这反映了当前互联网行业对高并发处理能力的极高要求。 对于那些真正在互联网公司中负责过高并发系统的求职者,面试

【面试题92】熟悉Java并发吗,谈谈对JUC线程池ThreadPoolExecutor的认识吧

前提 很早之前就打算看一次JUC线程池ThreadPoolExecutor的源码实现,由于近段时间比较忙,一直没有时间整理出源码分析的文章。之前在分析扩展线程池实现可回调的Future时候曾经提到并发大师Doug Lea在设计线程池ThreadPoolExecutor的提交任务的顶层接口Execut

【面试题83】你说你精通Java并发,那给我讲讲J.U.C吧

J.U.C J.U.C即java.util.concurrent包,为我们提供了很多高性能的并发类,可以说是java并发的核心。 J.U.C和CAS和Unsafe和AQS Concurrent包下所有类底层都是依靠CAS操作来实现,而sun.misc.Unsafe为我们提供了一系列的CAS操作。 A

【面试题65】对多线程熟悉吗,来谈谈线程池的好处?

前几天公司面试,问了很多线程池的问题,由于也是菜鸟一只本来对线程池就不太熟悉,再加上一紧张脑袋一紧,就GG了,之后可谓是深恶痛极,决定把线程池这边好好的整理一番。 一、线程池的好处 线程池是啥子,干啥使它呀,老子线程使得好好的,非得多次一举,哈哈,想必来这里看这篇文章的都对线程池有点了解。那么我来整

【面试题63】对并发熟悉吗?说一下synchronized与Lock的区别与使用

引言: 昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。 于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对Lock的使用写了几个简单的Demo。

【面试题62】对并发熟悉吗?谈谈你对Java中常用的几种线程池的理解

1. 为什么使用线程池 为每个请求对应一个线程方法的不足是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资源更多。容易引起资源不足,造成浪费。为解决单个任务处理时间很短而请求的数目巨大的问题,引出线程池