ICode9

精准搜索请尝试: 精确搜索
  • Rust常用并发示例代码2022-09-04 16:34:43

    记录几个常用的并发用法: 1、如何让线程只创建1次 先看一段熟悉的java代码: void method1() { new Thread(() -> { while (true) { System.out.println(String.format("thread-id:%s,timestamp:%d", Thread.currentThread().getId(),

  • .NET异步编程模式(二)2022-08-15 10:30:46

    在 C#1 的时候就包含了APM,在 APM 模型中,异步操作通过 IAsyncResult 接口实现,包括两个方法 BeginOperationName 和 EndOperationName ,分别表示开始和结束异步操作。 Demo 我们先来看一个同步示例。新建WPF程序,在界面上放一个按钮。点击按钮访问外网,会有一定时间的阻塞。 private vo

  • redisson中的看门狗机制总结2022-07-20 10:00:18

    1:普通的Redis分布式锁的缺陷我们在网上看到的redis分布式锁的工具方法,大都满足互斥、防止死锁的特性,有些工具方法会满足可重入特性。如果只满足上述3种特性会有哪些隐患呢?redis分布式锁无法自动续期,比如,一个锁设置了1分钟超时释放,如果拿到这个锁的线程在一分钟内没有执行完毕,那么

  • C# .NET Framework 3.5 下 Task 与 EventWaitHandle 的简单例子2022-02-07 23:34:22

    只是把 Semaphore 换成了 EventWaitHandle。请与这个贴子中的例子进行比较:https://www.cnblogs.com/pencilstart/p/15865478.html 注意,由于 .NET 3.5下并没有官方实现的 Task 库,所以,是通过 VS 中 NuGet 取得的 非官方 实现的 Task 库,调用接口与官方.NET 4.0 后的应该是差不多的。

  • C# .NET Framework 3.5 下 Task 与 Semaphore 的简单例子2022-02-06 12:33:54

    使用 Thread 的请参考另一个贴子:https://www.cnblogs.com/pencilstart/p/15865400.html   注意,由于 .NET 3.5下并没有官方实现的 Task 库,所以,是通过 VS 中 NuGet 取得的 非官方 实现的 Task 库,调用接口与官方.NET 4.0 后的应该是差不多的。         1 using System; 2 us

  • C# .NET Framework 3.5 下 Thread 与 Semaphore 的简单例子2022-02-06 11:36:20

    这个例子试图用 C# 3.5 下支持的 Thread 与 Semaphore 来说明,如何让多线程异步(async)处理事情。 比较适合于 A,B 两人抢麦发言的场合。 1 using System; 2 using System.Threading; 3 4 namespace testSemaphore 5 { 6 class Program 7 { 8 Semaphore se

  • 分布式锁之Redis实现2022-01-27 10:32:23

    一、分布式锁 分布式锁,是一种思想,它的实现方式有很多。比如,我们将沙滩当做分布式锁的组件,那么它看起来应该是这样的: 加锁 在沙滩上踩一脚,留下自己的脚印,就对应了加锁操作。其他进程或者线程,看到沙滩上已经有脚印,证明锁已被别人持有,则等待。 解锁 把脚印从沙滩上抹去,就是解锁的过

  • Redisson原理2022-01-12 15:00:20

    1、场景 假设场景,多个线程并发(模拟并发)对库存数量进行扣减,现将库存预置在redis中,然后开启多线程对库存进行扣减 private static final String PRODUCT = "MoonCake"; private static final String PRODUCT_STOCK = PRODUCT + "Stock"; @Autowired private RedissonClient re

  • Redisson分布式锁学习总结:可重入锁 RedissonLock#unlock 释放锁源码分析2022-01-01 16:36:39

    原文链接:Redisson分布式锁学习总结:可重入锁 RedissonLock#unlock 释放锁源码分析 一、RedissonLock#lock 源码分析 1、根据锁key计算出 slot,一个slot对应的是redis集群的一个节点 redisson 支持分布式锁的功能,基本都是基于 lua 脚本来完成的,因为分布式锁肯定是具有比较复杂的判断

  • Redisson分布式锁学习总结:可重入锁 RedissonLock#lock 获取锁源码分析2022-01-01 16:02:36

    原文:Redisson分布式锁学习总结:可重入锁 RedissonLock#lock 获取锁源码分析 一、RedissonLock#lock 源码分析 1、根据锁key计算出 slot,一个slot对应的是redis集群的一个节点 redisson 支持分布式锁的功能,基本都是基于 lua 脚本来完成的,因为分布式锁肯定是具有比较复杂的判断逻辑,而l

  • 面试官:Redis 分布式锁如何自动续期2021-12-23 18:05:54

    点击“终码一生”,关注,置顶公众号 每日技术干货,第一时间送达!     1、Redis 实现分布式锁   指定一个 key 作为锁标记,存入 Redis 中,指定一个 唯一的用户标识作为 value。 当 key 不存在时才能设置值,确保同一时间只有一个客户端进程获得锁,满足互斥性特性。 设置一个过期时间

  • 基于Redis实现分布式锁(二)2021-12-06 16:04:54

            扑街前言:上篇文章简单的说了一下Redis实现分布式锁的基本原理,本次来分析下Redis提供的分布式锁的源码。(认识自己是菜鸟的第十一天) RedissonClient:         我们先说结论,Redis本身提供的RedissonClient对象(客户端对象),这个对象的getlock()方法能获取一把锁对象,然

  • Redisson分布式锁学习总结:读锁 RedissonReadLock#unLock 释放锁源码分析2021-11-20 17:58:20

    一、RedissonReadLock#unlock 源码分析 上一篇已经简单介绍了,redisson 提供的读写锁 RReadWriteLock 的使用demo、使用场景、和RedissonLock 的关系;也深入分析了读锁 RedissonReadLock 加锁 lua 脚本的执行逻辑、watchdog 机制 lua 脚本的执行逻辑。 下面,我们将继续分析读锁

  • mysql 批量更新 update foreach2021-11-10 16:33:16

    第一种方式:一条update<update id="updateThreadreturnList" parameterType="java.util.List"> update tb_thread set isDelete=0 where threadId in ( <foreach collection="list" item="item" index="index"

  • 多线程中 synchronized 锁升级的原理2021-10-14 12:02:33

    synchronized 锁升级原理:在锁对象的对象头里面有一个 threadid 字段,在第一次访问的时候 threadid 为空,jvm 让其持有偏向锁,并将 threadid 设置为其线程 id,再次进入的时候会先判断 threadid 是否与其线程 id 一致,如果一致则可以直接使用此对象,如果不一致,则升级偏向锁为轻量级锁

  • 分布式锁Redission2021-10-12 17:02:30

    Redisson 作为分布式锁 官方文档:https://github.com/redisson/redisson/wiki 引入依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.11.1</version> </dependency> 2.配置red

  • Redis分布式锁2021-09-16 23:36:14

    上一章节我提到了基于zk分布式锁的实现,这章节就来说一下基于Redis的分布式锁实现吧。 在开始提到Redis分布式锁之前,我想跟大家聊点Redis的基础知识。 说一下Redis的两个命令: SETNX key value setnx 是SET if Not eXists(如果不存在,则 SET)的简写。  用法如图,如果不存在set成

  • C#多线程开发-线程池032021-09-06 08:32:51

    你好,我是阿辉。 前面2篇文章介绍了线程的基础知识和线程同步,下面我们来一起认识学习下,线程池的使用。 线程池 创建线程是昂贵的操作,所以为每个短暂的异步操作创建线程会产生显著的开销。一般情况下,都会使用池,也就是线程池进行管理。 线程池可以成功地适应于任何需要大量短暂的开

  • redis分布式锁实现---源码分析2021-08-02 11:01:37

    一、回顾一下分布式锁的基本使用方式 ①、注入redissonClient客户端 ②、通过redissonClient客户端获取锁对象rLock ③、通过rLock尝试获取锁 // ①、注入redissonClient客户端 @Autowired private RedissonClient redissonClient; public boolean getLock() { // ②、

  • SpringBoot Schedule 调整默认调度线程数2021-06-26 23:31:29

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/14933829.html   Project Directory   Maven Dependency <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&quo

  • 关于ThreadLocal你要知道的一切2021-05-01 21:01:18

    ThreadLocal是线程本地变量,可以应用在分布式系统追踪,事务管理方面,这里先提出几个较难的问题 ThreadLocal的内部大致实现原理?ThreadLocal的Entry的key为何设计成弱引用?ThreadLocal的hash碰撞是如何处理的?ThreadLocal如何处理主线程传值到子线程?如何让子线程跟随主线程tl值变化

  • synchronized锁升级的过程2021-04-16 16:02:11

    锁状态 无锁 偏向锁 轻量级锁 重量级锁 偏向锁的升级 当线程1访问代码块并获取锁对象时,会在java对象头和栈帧中记录偏向锁的threadID,偏向锁不会主动释放锁 当线程2再次获取锁是,比较当前线程的threadID和对象头中的threadID是否一致 如果一致,则无需加锁、解锁,直接重入 如果不一

  • Redisson分布式锁源码解读2021-03-16 12:58:39

    目录 Redisson源码分析 Redis 发布订阅 加锁 tryLock() lock() 解锁 unlock() RedLock算法实现的锁 Redisson源码分析 上篇文章链接: https://blog.csdn.net/QiuHaoqian/article/details/114301895. 中说过,分布式锁的核心功能其实就三个:加锁、解锁、设置锁超时。这三个功能也是

  • Redisson 源码初探 (六)公平锁2021-02-26 21:29:51

    因为Redisson 默认是非公平锁,client 端互相一起争抢,现在我们继续研究公平锁,为什么要研究?研究分布式锁 不仅仅要研究最基础的锁对吧,我们要把一系列的非公平锁 公平锁 读写锁 RedLock锁,Semaphore CountDownLatch  一系列的研究完,才算真正的研究了分布式锁,对吧 那么公平锁呢,我们知

  • 又长又细,万字长文带你解读Redisson分布式锁的源码2021-02-25 10:01:59

    前言 上一篇文章写了Redis分布式锁的原理和缺陷,觉得有些不过瘾,只是简单的介绍了下Redisson这个框架,具体的原理什么的还没说过呢。趁年前项目忙的差不多了,反正闲着也是闲着,不如把Redisson的源码也学习一遍好了。 虽说是一时兴起,但仔细研究之后发现Redisson的源码解读工作量还是挺

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有