![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
线程并发+锁机制
文章平均质量分 91
1
暮色里de白雪檐
相信自己,人生之美在于当下
人生四季,寒暑交替,笑看起起落落
心若简单,生活就简单
展开
-
并发编程:ScheduledThreadPoolExecutor你真的了解吗?
创建一个配置类来定义你的ScheduledThreadPoolExecutor实例。@Bean// 设置线程池大小// 设置线程前缀// 取消任务时是否移除注意,虽然上述示例中使用了ThreadPoolTaskScheduler,它是Spring对定时任务线程池的封装,底层也是基于实现的,因此适合用于集成定时任务。原创 2024-05-25 15:28:16 · 708 阅读 · 0 评论 -
幂等性实现方案
目前这个业务其实很常见只不过呢,很多方式去处理,比如通过数据库的唯一性、或者分布式锁的实现方案、业务代码实现乐观锁思想去实现、redis分布式结合token等方式,但是本篇博文都一一介绍到,可能有的没介绍到,会在后续继续更新的。原创 2024-03-06 16:08:02 · 385 阅读 · 0 评论 -
还在无脑使用synchronized?volitale或许能更优雅的帮到你
volatile 修饰符适用于以下场景:某个属性被多个线程共享,其中有一个线程修改了此属性,其他线程可以立即得到修改后的值。比如boolean flag ,或者监视数据变化,实现轻量级同步单纯的赋值,比如将flag的值改为true或者false,不适用于count++这样的非原子操作监视数据变化,比如检测到flag的值变为true,就退出循环等操作,当温度超过40度就报警等。转载 2023-12-09 18:15:23 · 97 阅读 · 0 评论 -
【性能优化】-多线程实现百万级导出/导入到excel
百万级数据如何优化导出原创 2022-12-29 17:09:09 · 3421 阅读 · 4 评论 -
TransmittableThreadLocal还有人不知道的吗?
前言首先本文主要介绍ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal三者之间区别、如何使用、什么场景使用以及对原理和源码的介绍。介绍原理的时候通过最直白、最易懂的语言争取让大家了解三者之间的区别,以及日常如何把他们使用起来ThreadLocalThreadLocal解决的是每个线程可以拥有自己线程的变量实例。可以从隔离的角度解决变量线程安全的问题。举个例子用户登陆后将用户的信息保存到ThreadLocal中,ThreadLoca原创 2022-05-26 16:30:12 · 336 阅读 · 1 评论 -
数据结构-Queue
Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接 口下表显示了jdk1.5中的阻塞队列的操作: add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException..原创 2021-11-05 16:40:24 · 547 阅读 · 0 评论 -
如何优雅的停止一个线程?
-对于线程的停止,通常情况下我们是不会去手动去停止的,而是等待线程自然运行至结束停止,但是在我们实际开发中,会有很多情况中我们是需要提前去手动来停止线程,比如程序中出现异常错误,比如使用者关闭程序等情况中。在这些场景下如果不能很好地停止线程那么就会导致各种问题,所以正确的停止程序是非常的重要的强行停止线程会怎样?在我们平时的开发中我们很多时候都不会注意线程是否是健壮的,是否能优雅的停止,很多情况下都是贸然的强制停止正在运行的线程,这样可能会造成一些安全问题,为了避免造成这种损失,我们应该给与线程.翻译 2021-04-11 16:16:02 · 232 阅读 · 0 评论 -
Monitor对象是什么?
synchronized保证线程同步的作用相信大家都已经非常熟悉了,可以把任意一个对象当作锁。synchronized 关键字无论是修饰代码块,还是修饰实例方法和静态方法,本质上都是作用于对象上。多个线程要竞争共享资源,而操作共享资源资源的代码就在临界区内,想要进入到这个临界区就必须持有锁。当用 synchronized 修饰代码块时,编译后的字节码会有 monitorenter 和 monitorexit 指令,分别对应的是获得锁和解锁。当用 synchronized 修饰方法时,会给方法加上标记翻译 2021-03-10 13:53:28 · 8170 阅读 · 0 评论 -
通俗易懂 悲观锁、乐观锁、可重入锁、自旋锁、偏向锁、轻量/重量级锁、读写锁、各种锁及其Java实现!
网上关于Java中锁的话题可以说资料相当丰富,但相关内容总感觉是一大串术语的罗列,让人云里雾里,读完就忘。本文希望能为Java新人做一篇通俗易懂的整合,旨在消除对各种各样锁的术语的恐惧感,对每种锁的底层实现浅尝辄止,但是在需要时能够知道去查什么。首先要打消一种想法,就是一个锁只能属于一种分类。其实并不是这样,比如一个锁可以同时是悲观锁、可重入锁、公平锁、可中断锁等等,就像一个人可以是男人、医生、健身爱好者、游戏玩家,这并不矛盾。OK,国际惯例,上干货synchronized与LockJava中有两转载 2021-03-05 19:43:50 · 325 阅读 · 0 评论 -
浅谈Java中synchronized和volatile的区别
起手篇我们今天来介绍一下java面试中最常会被面试官提到的问题,也是Java多线程中经常被问到的问题:synchronized和volatile的区别,希望能够帮助到Java相关方面的求职者Java内存模型(JMM)提到这两个有关于线程的关键字,那么我们不得不提到Java的内存模型了(JMM),下面我们先看一下Java内存模型在处理多线程方面的工作原理图。Java内存模型(java Memory Model)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到.原创 2021-03-05 17:03:51 · 218 阅读 · 0 评论 -
线程池原理
线程池原理转载 2021-01-06 11:13:40 · 141 阅读 · 0 评论 -
粗谈synchronize和Lock锁的区别及使用场景
说起这两个单词,大家肯定都是熟悉,我所说的熟悉是指大家都耳濡目染了,但是究竟有什么区别呢,这里我主要从底层原理和使用场景上进行浅谈:区别Lock不是Java语言内置的,synchronized是Java语言的关键字,因此是内置特性。Lock是一个接口,通过这个接口的实现类可以实现同步访问;Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后或者执行同步代码异常,系统会自原创 2021-01-07 15:48:46 · 3492 阅读 · 0 评论 -
线程的生命周期-基础篇
大家好,不知不觉博主已经发布了几十篇的原创文章了,或者有些杂乱,但是做到了面面俱到,从现在开始博主要拉开线程篇了,不懂线程的java不是一位合格的程序员,废话不多说,开始上正菜……线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁新建:就是刚使用new方法,new出来的线程;就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功转载 2020-11-30 14:35:15 · 185 阅读 · 0 评论 -
JAVA中BIO与NIO、AIO的区别
什么是阻塞和非阻塞?什么是同步和异步?什么是BIO、NIO、AIO?转载 2020-10-27 14:04:48 · 95 阅读 · 1 评论