随笔分类 - Java
该文被密码保护。
该文被密码保护。
摘要:Volatile的底层原理 volatile的特点 被volatile修饰的变量具有如下特点: 1.保证此变量对所有的线程的可见性,不能保证它具有原子性(可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的) 2.禁止指令重排序优化 3.volatile 的读性能消耗与普通变量几乎相
阅读全文
摘要:Java线程池实现原理及在美团业务中的实践 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一
阅读全文
摘要:多线程和多线程同步 多线程编程是现代软件开发中的一项关键技术,在多线程编程中,开发者可以将复杂的任务分解为多个独立的线程,使其并行执行,从而充分利用多核处理器的优势。然而,多线程编程也带来了挑战,例如线程同步、死锁和竞态条件等问题。本篇文章将深入探讨多线程编程的基本概念(原子操作、CAS、Lock-
阅读全文
摘要:package com.dao.repository; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extens
阅读全文
摘要:核心线程: 默认永不销毁:此类线程处理完任务后,会调用任务队列的take方法,此方法是阻塞的,假如队列为空了,该线程就会被阻塞住,线程就能一直存活着了。 非核心线程: 空闲指定时间后,会被销毁:此类线程处理完任务后,会通过调用任务队列的pop方法,此方法接收一个时间参数且是限时阻塞的,假如队列为空,
阅读全文
摘要:一、背景: 线程池中有任务正在执行,此时需要关闭或重启应用,池中的任务如何处理,需要考虑任务的损失、关闭速度两个方面考虑。 推荐使用Spring提供的线程池:ThreadPoolTaskExecutor,让Spring帮我们管理线程池的生命周期,初始化、监控、扩展、关闭。 特别在应用关闭、重启时能实
阅读全文
摘要:通过GraalVM打包Java生成本地可执行程序 前言 GraalVM 是一种高性能、多语言通用虚拟机和编译器技术。它由 Oracle 开发并开源,旨在为不同的编程语言和应用场景提供统一的运行时环境和编译器平台。以下是 GraalVM 的一些主要特点和功能: 多语言支持: GraalVM 支持多种编
阅读全文
摘要:Java21虚拟线程的注意点 ThreadLocal能继续用么?Java 开发组设计虚拟线程的时候,原本想去掉对 ThreadLocal 的支持。但由于使用它的库太多,并且很多为了传参才用,并不是缓存,所以就保持了支持。像隐式传参的这种场景,继续用也没事儿,就是性能有所损耗。(不会影响 GC,生命周
阅读全文
摘要:# 理解Java偏向锁、轻量级锁、重量级锁 转载自:https://zhuanlan.zhihu.com/p/571793506 ## 前言 今天我们来聊聊Java Synchronized 里面的各种锁:偏向锁、轻量级锁、重量级锁,以及三个锁之间是如何进行锁膨胀的。先来一张图来总结 ![](htt
阅读全文