
并发编程
文章平均质量分 92
敖云岚
嘿!我是敖云岚,一个在代码江湖里横冲直撞的 “野生程序员”。敲得了 Java 代码,玩转得了 C++ 世界,偶尔还能在 MySQL、Redis 和 RabbitMQ 的地盘里 “撒点野”。写代码时,我是严谨的 “逻辑怪”;生活中,我是行走的 “段子手”。别问我为啥这么爱编程,问就是代码里藏着星辰大海,而我,誓要做那个 “代码捕手”! 快来和我一起,在技术的世界里快乐摸鱼、疯狂成长!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【并发编程】ThreadLocal 实现线程的专属本地副本
ThreadLocal 提供线程局部变量。这些变量与正常的变量不同,因为每一个线程在访问 ThreadLocal 实例的时候(通过 get 或 set 方法)都有自己的、独立初始化的变量副本。ThreadLocal 实例通常是类的私有静态字段,使用它的目的是希望将状态(例如用户ID或事务ID)与线程关联起来。返回线程局部变量的初始值@Overridereturn 0;工作中不建议使用该方式,而是通过匿名内部类的方式。以匿名内部类的方式设置初始值。原创 2025-05-12 14:18:49 · 1075 阅读 · 0 评论 -
【并发编程】Redisson 的分布式锁
Redisson 是一个开源的用于操作 Redis 的 Java 框架。与 Jedis 和 Lettuce 等轻量级的 Redis 框架不同,它提供了更高级且功能丰富的 Redis 客户端。它提供了许多简化 Redis 操作的高级 API,并支持分布式对象、分布式锁、分布式集合等特性。Redisson 可以设置分布式锁的过期时间,从而避免锁一直被占用而导致的死锁问题。原创 2025-05-11 15:54:28 · 1420 阅读 · 0 评论 -
【并发编程】基于 Redis 手写分布式锁
在集群的情况下,如果客户端发送请求到主服务器获取锁,此时主服务器还没来得及向从服务器同步获取锁的状态,主服务器就发生了宕机。此时客户端再次请求服务器到主服务器(由从服务器选主升级为主服务器),由于之前没有同步锁的状态,获取到另一把全新的锁,导致锁的失效,引发超卖现象。:如果一个线程已经持有了锁,在执行过程中又尝试再次获取该锁(例如递归调用场景下),由于默认的分布式锁实现通常是不支持重入的,第二次获取锁时会失败,进而可能导致死锁(比如线程在持有锁的情况下递归调用自身,每次调用都尝试获取锁但获取不到)原创 2025-05-10 22:52:05 · 1424 阅读 · 0 评论 -
【并发编程】MySQL锁及单机锁实现
本文详细探讨了MySQL的锁机制及基于JVM本地锁的线程安全实现。MySQL锁按粒度分为表级锁、行级锁和页级锁,按功能分为共享锁、排他锁和意向锁。InnoDB通过记录锁、间隙锁、临键锁和插入意向锁实现行级锁。在JVM本地锁方面,分析了多线程并发访问的线程安全问题,并通过synchronized和ReentrantLock实现线程安全。此外,还讨论了基于MySQL锁的线程安全实现,包括原子SQL、悲观锁和乐观锁,并比较了它们的性能优劣。最原创 2025-05-08 23:46:18 · 1128 阅读 · 0 评论 -
【Java 并发编程】线程的基本使用(持续更新优化)
若要中断一个线程,你需要手动调用该线程的 interrupt 语法,该方法也仅仅是将线程对象的中断标识设置为 true,接着你需要自己写代码不断检查当前的线程的标识位,如果为 true ,表示别的线程请求这条线程中断,此时究竟该做什么需要程序员写代码实现。Thread 类的对象就是用来描述一个线程执行流的,JVM 会将这些 Thread 对象组织起来,用于线程调度,线程管理。方法,并不是让线程立即结束,而是告诉该线程你该结束了,至于该线程真的要结束还是等会结束,都是可以通过代码灵活控制的。原创 2025-05-04 20:02:11 · 1296 阅读 · 0 评论 -
【Java 并发编程】线程的生命周期
使用 jconsole 可以看到 t1 的状态是 WAITING。修改上面的代码, 把 t1 中的 sleep 换成。可以看到 t1 的状态是。原创 2025-05-04 19:46:29 · 417 阅读 · 0 评论