• 2024-07-02JAVA并发知识
    JAVA常见的并发知识点,概念和使用方法。一、Synchronized和Lock的区别Synchronized:Synchronized是Java提供的关键字,可以在需要同步的对象中加入此控制。其可以用来修辞方法,也可以加在特定代码块中,而修辞特定代码块时括号中表示需要锁的对象。JVM底层实现:  Synchronized
  • 2024-07-02Java 并发 - ThreadLocal详解
    ThreadLocal是通过线程隔离的方式防止任务在共享资源上产生冲突,线程本地存储是一种自动化机制,可以为使用相同变量的每个不同线程都创建不同的存储。@立刀旁目录#带着BAT大厂的面试问题去理解#ThreadLocal简介#ThreadLocal理解#ThreadLocal原理#如何实现线程隔
  • 2024-06-24ThreadLocal 源码浅析
    前言多线程在访问同一个共享变量时很可能会出现并发问题,特别是在多线程对共享变量进行写入时,那么除了加锁还有其他方法避免并发问题吗?本文将详细讲解ThreadLocal的使用及其源码。一、什么是ThreadLocal?ThreadLocal是JDK包提供的,它提供了线程本地变量,也就是说,如果你创建
  • 2024-06-24ThreadLocal 源码浅析
    前言多线程在访问同一个共享变量时很可能会出现并发问题,特别是在多线程对共享变量进入写入时,那么除了加锁还有其他方法避免并发问题吗?本文将详细讲解ThreadLocal的使用及其源码。一、什么是ThreadLocal?ThreadLocal是JDK包提供的,它提供了线程本地变量,也就是说,如果你
  • 2024-06-22ThreadLocal详解
    在做项目时发现项目中一般都会把用户信息存入ThreadLocal中,方便后续使用用户信息。但是ThreadLocal的原理是什么呢?这里结合网上的资料记录一下我自己的理解。ThreadLocal是什么?网上有的说法是ThreadLocal是线程本地变量,如果创建了一个ThreadLocal变量,那么访问这个变量的每
  • 2024-06-17面经梳理-java多线程其他
    题目Threadlocal使用场景?原理?如何保证内存不泄露?ThreadLocal使用场景不加锁的情况下,多线程安全访问共享变量,每个线程保留共享变量的副本(线程特有对象),每个线程往这个ThreadLocal中读写是线程隔离。ThreadLocal原理Thread类有一个类型为ThreadLocal.ThreadLocalMap的实例变量th
  • 2024-06-17面试真题
    面试真题**1.ThreadLocal什么情况内存泄漏?ThreadLocal是Java中用于创建线程局部变量的类。每个线程都拥有自己独立的变量副本,互不干扰。虽然ThreadLocal可以方便地实现线程安全,但不正确的使用方式可能会导致内存泄漏。以下是ThreadLocal引起内存泄漏的几种常见情况:1.Th
  • 2024-06-17ThreadLocal 核心源码分析
    ThreadLocal简介多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证和规避多线程访问出
  • 2024-06-15synchronized内置锁和volatile关键字
    synchronized内置锁对象锁和类锁:对象锁是用于对象实例方法,或者一个对象实例上的,类锁是用于类的静态方法或者一个类的class对象上的。我们知道,类的对象实例可以有很多个,但是每个类只有一个class对象,所以不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁。但是有一点
  • 2024-06-12在 Wed 中应用 MyBatis(同时使用MVC架构模式,以及ThreadLocal 事务控制)
    1.在Wed中应用MyBatis(同时使用MVC架构模式,以及ThreadLocal事务控制)@目录1.在Wed中应用MyBatis(同时使用MVC架构模式,以及ThreadLocal事务控制)2.实现步骤:1.第一步:环境搭建2.第二步:前端页面index.html3.第三步:创建pojo包、service包、dao包、web包、utils包,exceptions
  • 2024-06-12ThreadLocal源码分析
    目录0x00ThreadLocal0x01ThreadLocalMap0x02ThreadLocal内存泄漏0x00ThreadLocalThreadLocal提供了线程局部的变量,但和普通局部变量不同,同一个ThreadLocal变量可以被多个线程共享,而不是线程私有的。在ThreadLocal源代码中有一个使用例子,代码如下:importjava.ut
  • 2024-06-10Java学习-JDBC(五)
    JDBC优化及工具类封装现有问题①创建连接池②获取连接③连接回收ThreadLocal为解决多线程程序的并发问题提供了一种新的思路,使用这个工具类可以很简洁地编写出优美的多线程程序,通常用在多线程中管理共享数据库连接、Session等ThreadLocal用于保存某个线程共享变量,原因是
  • 2024-06-01TransmittableThreadLocal原理浅析
    TransmittableThreadLocal原理浅析1.从ThreadLocal到TransmittableThreadLocalTTL(TransmittableThreadLocal)是继承自InheritableThreadLocal,本质上也是一个ThreadLocal,可以理解为是一个可以在线程之间传递上下文的ThreadLocal。1.1ThreadLocalThreadLocal中填充的变量属于当
  • 2024-05-31ThreadLocal使用过程中要注意哪些事项
    在使用ThreadLocal过程中,需要注意以下几个关键事项以确保正确和高效地使用这一工具:内存泄漏预防:ThreadLocal变量在不再使用时应及时调用remove()方法清理,避免因为ThreadLocal对象的引用链没有断开而导致的内存泄漏。特别是在线程池环境中,线程会被复用,如果不清理,之前线程绑定
  • 2024-05-30SpringBoot之ThreadLocal保存请求用户信息
    一、ThreadLocal概述 线程局部变量,创建一个线程变量后,针对这个变量可以让每个线程拥有自己的变量副本,每个线程是访问的自己的副本,与其他线程的相互独立。二、具体代码demo实现(1)创建user实例对象@DatapublicclassUserDTO{privateLonguserId;privateStringU
  • 2024-05-28京东二面:为什么Netty要造FastThreadLocal?
    FastThreadLocal从字面意义上来看,它是“Fast”+“ThreadLocal”的结合体,寓意为快速的ThreadLocal。那么,问题来了,Netty为什么要再造一个FastThreadLocal?FastThreadLocal运行快的原因是啥?除了快之外,它还有其他优势吗?1.先从ThreadLocal说起ThreadLocal线程本地变量,每个线程都
  • 2024-05-27研二学妹面试字节,竟倒在了ThreadLocal上,这是不要应届生还是不要女生啊?
    一、写在开头  今天和一个之前研二的学妹聊天,聊及她上周面试字节的情况,着实感受到了Java后端现在找工作的压力啊,记得在18,19年的时候,研究生计算机专业的学生,背背八股文找个Java开发工作毫无问题,但现在即便你是应届生,问的考题也非常的深入和细节了,只会背八股,没有一定的代码量和
  • 2024-05-222024.05.04
    学习时间1h代码行数50行博客量1篇学习内容packagecom.example.demo22.utils;importcom.auth0.jwt.JWT;importcom.auth0.jwt.algorithms.Algorithm;importjava.util.Date;importjava.util.Map;publicclassJwtUtils{privatestaticfinalStringKEY
  • 2024-05-21SonarLint实践总结
    SonarLint实践总结1、集合要用isEmpty()判空。MinorcodesmellUseisEmpty()tocheckwhetherthecollectionisemptyornot.问题代码:   Rule:UsingCollection.size()totestforemptinessworks,butusingCollection.isEmpty()makesthecodemorer
  • 2024-05-15优秀开源(6)TransmittableThreadLocal
    序言 ThreadLocal存在的问题在多线程环境下,ThreadLocal可以避免线程安全问题,但是在使用线程池等多线程环境时,ThreadLocal可能会出现一些问题。例如,当使用线程池时,线程池中的线程可能会被多个任务共享,如果使用ThreadLocal存储数据,可能会导致数据被错误地共享。TransmittableTh
  • 2024-05-14记一次ThreadLocal中的用户信息混乱问题
    前言记录一次开发中遇到的关于ThreadLocal问题,场景是数据库表中的操作人总是无缘无故的被更改,排查了几遍代码才发现是ThreadLocal没有及时清理导致的。一、为什么使用ThreadLocal1.ThreadLocal的好处一般的项目设计开发中,用户登录后,我们会将用户的信息存到Session,如
  • 2024-05-12ThreadLocal入门笔记
    ThreadLocal入门笔记最近学习小傅哥的面经手册,学习到ThreadLocal,这里做个笔记加深印象,也方便日后复习。ThreadLocal是除了加锁这种同步方式之外的一种规避多线程访问出现线程不安全的方法,它的核心思想是:共享变量在每个线程都有一个副本,每个线程操作的都是自己的副本,对另外的线程
  • 2024-05-09高并发秒杀项目随手笔记
    1数据库基字符集为什么选择utf8mb4? 2在MyBatis中,JavaBean属性名和数据库字段名的映射非常关键,正确设置这一映射是保证数据正确封装到JavaBean中的前提。以下是MyBatis映射机制的详细解释:1.默认映射行为如果在MyBatis的<resultMap>中没有明确指定映射关系,MyBa
  • 2024-05-08Java ThreadLocal 类的使用
    基于Java-ThreadLocal类的使用整理ThreadLocal表示线程的局部变量,当前线程可以通过set/get来对这个局部变量进行操作,其他线程不能对其进行访问ThreadLocal支持泛型,也就是支持指定value类型,像是ThreadLocal<Date>就是指定value为Date类型。每个线程会有一
  • 2024-04-27TransmittableThreadLocal & InheritableThreadLocal
    InheritableThreadLocal类是ThreadLocal类的一个子类,它提供了一个线程局部变量,该变量的值可以被当前线程以及所有子线程共享。这在多线程编程中非常有用,特别是在需要在父线程和子线程之间传递数据时。下面是一个简单的Java代码示例,演示了InheritableThreadLocal的用法:publiccl