为何需要分布式锁? 在单进程的系统中,当遇到并发情况下,会出现一些数据异常的问题,但是如果这些数据是需要保证唯一性的话,那我们就希望在同一时刻,只能有一个线程在执行这块代码,通常我们一般都是通过简单的加锁或同步来实现并解决这个问题。 但是以上都是单进程多线程的情况,如果出现多进程多线程,显然会出现问 ...
分类:
Web程序 时间:
2020-08-25 15:43:01
阅读次数:
61
Lock显式锁是一个接口 Lock方式来获取锁支持中断、超时不获取、是非阻塞的 提高了语义化,哪里加锁,哪里解锁都得写出来 Lock显式锁可以给我们带来很好的灵活性,但同时我们必须手动释放锁 支持Condition条件对象 允许多个读线程同时访问共享资源 Synchronized锁经过优化之后,现在 ...
分类:
其他好文 时间:
2020-08-19 19:17:57
阅读次数:
76
async await 异步下载 异步代码 加锁 lock 异步缓存 FTP异步下载代码: /// <summary> /// 异步下载文件 /// </summary> /// <param name="ftpPath">ftp路径</param> /// <param name="ftpUser ...
分类:
其他好文 时间:
2020-08-12 15:53:18
阅读次数:
47
从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。 ...
分类:
编程语言 时间:
2020-08-09 09:23:44
阅读次数:
101
list arrayList 多线程不安全 //java.util.ConcurrentModificationException 解决办法 * 1,new Vector<>();并发性能下降很大(所有操作都加锁) * 2,Collections.synchronizedList(arrayList ...
分类:
其他好文 时间:
2020-08-07 12:36:37
阅读次数:
77
前两天看极客时间Java并发课程的时候,刷到一个概念:活锁。死锁,倒是不陌生,活锁却是第一次听到。在介绍活锁之前,我们先来复习一下死锁。下面的例子模拟一个转账业务,多线程环境,为了账户金额安全,对账户进行了加锁。1publicclassAccount{2publicAccount(intbalance,Stringcard){3this.balance=balance;4this.card=car
分类:
其他好文 时间:
2020-08-06 09:23:01
阅读次数:
52
双重检查[推荐用] public class Singleton { private static volatile Singleton singleton; private Singleton() {} public static Singleton getInstance() { if (sin ...
分类:
其他好文 时间:
2020-08-04 18:14:21
阅读次数:
65
写在前面上一篇文章原子性问题的宏观理解带领大家了解了锁和资源的模型,有了这篇文章的铺垫,相信理解这一篇文章就非常轻松了当我们要保护单个资源并对其进行修改其实很简单,只需按照下图分三步走创建受保护资源R的锁加锁进入临界区解锁走出临界区上图的关键是「R1的锁保护R1」的指向关系是否正确如果都是保护单个资源这样简单,程序猿的世界该有多美好,可惜并不是,通常我们需要保护多个资源保护多个资源保护多个没有关系
分类:
其他好文 时间:
2020-08-02 10:23:49
阅读次数:
97
避免死锁 在有些情况下死锁是可以避免的。本文将展示三种用于避免死锁的技术: 加锁顺序 加锁时限 死锁检测 加锁顺序 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。 如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。看下面这个例子: Thread 1: lock ...
分类:
其他好文 时间:
2020-07-29 21:24:07
阅读次数:
74