SlowIsFastyxy
码龄5年
关注
提问 私信
  • 博客:12,209
    12,209
    总访问量
  • 27
    原创
  • 403,963
    排名
  • 8
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2020-05-16
博客简介:

weixin_47871772的博客

查看详细资料
个人成就
  • 获得5次点赞
  • 内容获得12次评论
  • 获得100次收藏
  • 代码片获得1,003次分享
创作历程
  • 23篇
    2023年
  • 3篇
    2022年
  • 1篇
    2020年
成就勋章
TA的专栏
  • java多线程与高并发
    7篇
  • java多线程高并发面试题专栏
    6篇
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

并发安全的集合ConcurrentHashMap

本堂课目标。
原创
发布博客 2023.09.14 ·
193 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

08、随便聊聊ThreadLocal&ForkJoin

字范围过大(代码中设定的是大于200),则将这个计算任务拆分成两个子任务(T1.1和T1.2),每个子任务各自负责计算一半的数据累加,请参见代码中的fork方法。ForkJoinTask : 基本任务,使用fork、join框架必须创建的对象,提供fork,join操作,常用的三个子类。简单给大家解释一下Fork/Join的相关api,在刚刚的案例中,涉及到几个重要的API, ForkJoinTask ,种危险是,如果线程是线程池的, 在线程执行完代码的时候并没有结束,只是归还给线程池,这个时候。
原创
发布博客 2023.09.13 ·
160 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

07、J.U.C并发工具集场景及原理分析

是一个不存储元素的阻塞队列,它的主要特点是每个插入操作必须等待另一个线程的相应移除操作,反之亦然。的特性,当队列为空时,消费者线程将阻塞,直到生产者线程向队列中添加元素;同样,当队列已满时,生产者线程将阻塞,直到消费者线程从队列中取出元素。实例,并创建了两个线程:一个生产者线程和一个消费者线程。生产者线程向队列中添加元素,而消费者线程从队列中取出元素。本质上: 抢占一个令牌. -> 如果抢占到令牌,就通行, 否则,就阻塞!**原理分析:**通过信息的传递来实现生产者和消费者的阻塞和唤醒。
原创
发布博客 2023.09.11 ·
190 阅读 ·
0 点赞 ·
2 评论 ·
0 收藏

1-2章、笔记总结

setCharacterEncoding()指定每个请求的编码,getParameter()根据表单组件名称获取提交数据,getParameterValues()获取表单组件对应多个值时的请求数据。
原创
发布博客 2023.09.02 ·
168 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

第一课、请求与相应

/出现的目的是为了定义一个规则。
原创
发布博客 2023.08.27 ·
85 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

06、condition源码分析及基于condition实现阻塞队

在一些项目中,可能同公司的其他部门的应用服务会要求同步我们人事系统的部分组织架构数据,但是当人事系统数据发生变更后,应用的依赖方需要进行数据的同步, 这种场景下,由于员工离职/变更操作不是非常频繁,所以能有效防止线程阻塞,也基本没有并发和吞吐量的要求,所以可以将数据存放到ArrayBlockingQueue中, 由依赖方应用服务进行获取同步。比如会话转交,通常坐席需要进行会话转交,如果有坐席在线那么会为我们分配一个客服,但是如果没有,那么阻塞请求线程,一段时间后会超时或者提示当前坐席已满。
原创
发布博客 2023.08.24 ·
127 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

04、并发安全性之Lock锁及原理分析

那什么是JMM呢?首先,我们都知道Java程序是运行在Java虚拟机上的,同时我们也知道,JVM是一个跨语言跨平台的实现,也就是Write Once、Run Anywhere。那么JVM如何实现在不同平台上都能达到线程安全的目的呢?
原创
发布博客 2023.08.23 ·
179 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

05、线程阻塞唤醒wait,notify以及condition, 死锁等原理分析

方法让当前线程阻塞,等待其他线程发出通知或中断信号。这个方法的主要作用是尝试获取指定数量的锁,如果成功则返回true,否则返回false。关键字获取队列的锁,确保同一时间只有一个线程可以访问该代码块。join也是基于wait/notify来实现,notify是在线程销毁之后调用的,代码如下。接着,线程会暂停1秒钟,模拟生产过程。如果队列已满,当前线程会被阻塞,同时释放生产者所持有的锁,直到其他线程调用。方法中,使用了一个无限循环来模拟持续生产数据的过程。方法,表示当前已经生产了数据,提示消费者可以消费了。
原创
发布博客 2023.08.23 ·
214 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

03、并发编程带来的挑战之可见性

引入总线锁和缓存锁机制之后,CPU对于内存的操作大概可以抽象成下面这样的结构,从而达到缓存一致性效果如下图所示,基于上述分析,我们基本上了解到,导致可见性问题的本质,是因为CPU层面的不断优化,从最早的CPU高速缓存、到Store Buffer,本意上是提高CPU的利用率,但是实际上却因为这样一个优化带来了缓存一致性问题。为了解决CPU的缓存一致性问题,CPU提供了总线锁、缓存锁的机制,只需要在总线上声明Lock#信号,CPU便会增加锁的机制来解决缓存一致性问题。
原创
发布博客 2023.08.23 ·
91 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

syschronized、volatile相关面试题

Java内存模型(JMM)是Java虚拟机规范中定义的一组规则,用于描述Java程序中的多线程运行时内存访问行为。JMM的主要目的是为了解决多线程环境下的内存可见性、原子性和有序性问题,以保证Java程序的正确性和稳定性。JMM将Java虚拟机分为了三个主要区域:堆、栈和方法区。其中,堆是被所有线程共享的一块物理区域,而栈和方法区则是每个线程都有自己独立的一块物理区域。原子性:一个操作要么全部执行成功,要么全部不执行。可见性:一个线程对共享变量的修改,其他线程能够看到。
原创
发布博客 2023.08.21 ·
153 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

LuckSupport与线程中断面试题

其中最常用的方法是park()和unpark()方法,分别可以阻塞和唤醒线程,作用类似于wait/notify方法。此外,LockSupport还提供了lock()、unlock()、tryLock()、tryUnlock()等方法,用于实现锁的获取和释放。例如,可以将大的锁拆分成多个小的锁,或者使用更细粒度的锁来减少锁的数量。为了避免死锁,我们需要确保在捕获到该异常后及时释放已经持有的锁,以便其他线程可以获取锁并继续执行。如果锁已经被其他线程占用,那么当前线程将被阻塞,直到锁被释放。
原创
发布博客 2023.08.21 ·
118 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

CompletableFuture与FutureTask面试题

参考答案:回调是一种编程模式,它允许我们把一个函数作为参数传递给另一个函数,当某个事件发生时,这个函数会被自动调用。在Java中,我们通常会使用回调来实现事件驱动的编程,比如处理用户界面的事件,处理网络请求的结果等。回调(Callback)是一种常见的编程模式,它允许我们将一个函数作为参数传递给另一个函数,并在需要时调用这个函数。回调通常用于异步编程和事件驱动编程,例如处理用户输入、网络请求等。在Java中,我们可以使用接口来实现回调。// 定义一个回调接口。
原创
发布博客 2023.08.21 ·
846 阅读 ·
2 点赞 ·
1 评论 ·
1 收藏

Java线程池面试题

最大线程数(maximumPoolSize):是指线程池中允许的最大线程数。当工作队列满了并且活动线程数达到最大线程数时,如果还有新任务提交,线程池将采取饱和策略来处理任务,即丢弃新任务或者将任务放入队列末尾。核心线程数(corePoolSize):是指线程池中始终保持活跃的线程数量。当工作队列满了并且活动线程数达到核心线程数时,如果有新任务提交,线程池会先检查当前活动线程数是否小于核心线程数,如果是,则创建一个新的线程来处理任务;否则,将任务放入阻塞队列中等待执行。
原创
发布博客 2023.08.20 ·
691 阅读 ·
0 点赞 ·
1 评论 ·
3 收藏

2023最新mysql面试题总结

索引是对数据库表中一列或多列的值进行排序的一种结构。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。MySQL中使用的数据结构主要有BTree索引和hash索引。对于hash索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的情况下,使用hash索引会更加高效。而对于BTree索引来说,它的底层数据结构就是B树,因此在绝大多数需求为多条记录查询的情况下,使用BTree索引会更加高效。
原创
发布博客 2023.08.20 ·
735 阅读 ·
0 点赞 ·
1 评论 ·
6 收藏

多线程aqs面试题

作为一位Java程序员,我对Java中的AQS(AbstractQueuedSynchronizer)非常熟悉。AQS是一个用于构建锁和同步器的框架,它提供了一种灵活的方式来实现线程间的协调和同步。构建锁和同步器:AQS提供了一套API,可以方便地构建各种类型的锁和同步器,如ReentrantLock、Semaphore等。提供等待队列:AQS使用一个FIFO的等待队列来管理线程的等待和唤醒操作。线程在获取锁时会被加入到等待队列中,当锁可用时,会从队列中唤醒一个线程。
原创
发布博客 2023.08.20 ·
674 阅读 ·
1 点赞 ·
1 评论 ·
6 收藏

ThreadLocal面试题

答:ThreadLocal是Java中的一个类,它的作用是为每个线程提供一个独立的变量副本。这样,每个线程都可以独立地改变自己的副本,而不会影响其他线程的副本。数据库连接池:在多线程环境下,每个线程都需要访问数据库,使用ThreadLocal可以避免多个线程共享同一个数据库连接,提高性能。事务管理:在分布式系统中,多个服务之间需要协同完成一个事务。使用ThreadLocal可以为每个服务创建一个独立的事务上下文,避免事务冲突。用户会话管理:在Web应用中,每个用户请求都会创建一个新的会话。
原创
发布博客 2023.08.20 ·
326 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

02、并发编程带来的安全性挑战之同步锁

因为JVM虚拟机自己有一些默认启动的线程,这些线程里面有很多的Synchronized代码,这些Synchronized代码启动的时候就会触发竞争,如果使用偏向锁,就会造成偏向锁不断的进行锁的升级和。这么设计的目的,其实是为了减少重量级锁带来的性能开销,尽可能的在无锁状态下解决线程并发问题,其中偏向锁和轻量级锁的底层实现是基于自旋锁,它相对于重量级锁来说,算是一种无锁的实现。这就要引出Markword对象头这个概念了,它是对象头的意思,简单理解,就是一个对象,在JVM内存中的布局或者存储的形式。
原创
发布博客 2023.08.20 ·
97 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

01、了解线程

多线程
原创
发布博客 2023.08.18 ·
57 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

HM之seata基础搭建运用

本地事务,也就是传统的。
原创
发布博客 2023.08.18 ·
248 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

尚硅谷spring6学习笔记

Spring61、概述1.1、Spring是什么?Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。Spring 自诞生以来备受青睐,一直被广大开发人员作为 Ja
原创
发布博客 2023.08.14 ·
84 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多