标签:多线程

分布式常见面试题:聊聊分布式下的线程隔离机制

在分布式环境中,经常会碰到一个棘手的问题。有些业务访问量极大,而有些业务访问量较少,但访问量大的业务可能会拖垮其他业务。 比如说商品购买的下单接口被频繁调用,这就可能导致列表接口和详情接口都无法访问。如果这种场景不加以处理,用户的使用体验会非常差。但商品的内容得能看,列表也得能正常浏览。 常见的解决方案就是采用线程隔离机制,将查询接口分开隔离。比如下单接口允……

钉钉面试题-并发编程问题

本文主要讲解关于一道钉钉面试题-并发编程问题相关内容,让我们来一起学习下吧! 前言 学完了并发编程,是否真的能够灵活应用其思想呢? 实践才是检验真理的唯一标准,好记性不如烂笔头。 下面就让我以我一个朋友社招面试钉钉的一道面试题来讲解下并发编程的实际应用吧。 问题描述 // 假设我们有如下代码,query 是公共方法会提供给任意业务方调用,请完成 query ……

深入探索Java并发编程

本文主要讲解关于深入探索Java并发编程相关内容,让我们来一起学习下吧! 并发编程是Java开发中至关重要的一部分,它直接关系到应用程序的性能和稳定性。在这个高级阶段,我们将聚焦于性能优化、并发设计模式以及深入理解并发API的细节。 并发性能优化 在多线程环境中,性能优化通常涉及到减少锁的竞争、提高线程的局部性和减少上下文切换。 锁分离技术:通过将大锁分解……

Java中ReadWriteLock 和 StampedLock 的对比与详解

本文主要讲解关于Java中ReadWriteLock 和 StampedLock 的对比与详解相关内容,让我们来一起学习下吧! ReadWriteLock 和 StampedLock 的比较与解析 在多线程编程中,我们经常需要使用锁来保证同一时刻只有一个线程能够访问共享资源。Java提供了多种锁的实现,如ReentrantLock、ReadWriteLock……

Java并发模式和设计策略详解

本文主要讲解关于Java并发模式和设计策略详解相关内容,让我们来一起学习下吧! 引言 小伙伴们,今天小黑要和咱们聊聊Java并发编程的那些事儿。在现代软件开发中,高效地处理多任务是一个不可或缺的能力。特别是对于服务成千上万用户的应用,能够同时处理多个操作不仅是一个加分项,简直是必备技能了! 但说实话,Java并发编程就像是一门艺术,既美丽又充满挑战。为什么这……

Java项目中时间窗口及其应用场景

本文主要讲解关于Java项目中时间窗口及其应用场景相关内容,让我们来一起学习下吧! 一. 前言 时间窗口在限流 ,分布式 ID 的生成方面都有很多应用,这一篇主要目的是弄清楚怎么最好的实现这个功能。 时间窗口的应用很多 : 可以用于统计和监控,也可以用于限流和流量控制,或者在指定窗口里面做实时计算,ID 生成等业务处理等 二. 原理 时间窗口其实由 窗口 和……

单例模式为什么要使用volatile关键字

本文主要讲解关于单例模式为什么要使用volatile关键字相关内容,让我们来一起学习下吧! 在单例模式中,volatile 关键字主要用于确保多线程环境下的可见性和禁止指令重排序。当一个类使用懒汉式(Lazy Initialization)的方式创建单例对象时,volatile 可以防止由于指令重排序导致的问题。 考虑以下的懒汉式单例模式: public c……

Java并发工具类ThreadLocal、ConcurrentHashMap和CopyOnWrite的正确用法

本文主要讲解关于Java并发工具类的正确用法相关内容,涉及ThreadLocal、ConcurrentHashMap和CopyOnWriteArrayList的正确用法,让我们来一起学习下吧! 我们来看看在使用并发工具时,最常遇到哪些坑,以及如何解决、避免这些坑吧。 线程重用导致用户信息错乱 之前在生产上遇到一个诡异的bug,埋点数据的用户信息错乱,有时候获……

如何优化webpack打包速度

本文主要讲解关于如何优化webpack打包速度相关内容,让我们来一起学习下吧! 1.编译时缓存、多线程loader:cache-loader、thread-loader cache-loader用于避免项目资源的重复构建,如项目中的ts、tsx资源,在用babel-loader或者vue-loader编译前,先用cache-loader预处理一下,如果有缓存……

Java单例模式代码实现的几种方法

本文主要讲解关于Java单例模式代码实现的几种方法相关内容,让我们来一起学习下吧! 一、介绍 采取一定的方法,让软件系统一个类只能创建和使用一个实例对象,并提供一个取得对象的方法 二、作用 单例模式保证系统中这个类只有一个对象,节省了系统资源,适当使用可以提高系统性能 使用场景 需要频繁的创建和销毁对象、创建对象耗时过多但需要经常用到的、业务要求只能有一个实……

Java如何合理配置核心线程数的参数

本文主要讲解关于Java如何合理配置核心线程数的参数相关内容,让我们来一起学习下吧! 核心线程池的参数设置一般各种网络资料中比较推崇的是N+1和2N法,即: CPU 密集型任务(N+1)  :这种任务消耗的主要是 CPU 资源,可以将线程数设置为 N(CPU 核心数)+1。比 CPU 核心数多出来的一个线程是为了防止线程偶发的缺页中断,或者其它原因导致的任务……

Java如何查询导出百万数量级excel数据

本文主要讲解关于Java如何查询导出百万数量级excel数据相关内容,让我们来一起学习下吧! 一、思路 拆分(肯定不能一次io返回百万数据,服务可能直接就崩,数据库性能也会受到影响,进而影响其他业务) 异步查询(如果是同步等待,时间过长,会造成前端接口直接504,网关超时) 多线程 二、实现 @Slf4j @Service public clas……