今天写代码,尝试使用了AtomicInteger这个类,感觉使用起来很爽,特别适用于高并发访问,下面贴一个简单的例子: Java代码 CashierContext类部分代码:  …
分类:java锁
Java死锁 Thread Dump分析
Java中的死锁是指两个线程在互相等待对方释放锁的无限期阻塞现象。 举个例子: 1 public class TestDeadLock { 2 public static void main(String[] args)…
Java 多线程与锁
多线程 线程和进程的区别 进程(Process)是一个正在执行程序的实例,也包括了当前使用的程序计数器、寄存器和变量的一些值。 线程(Thread)是一种轻量级的进程(light weight process(LWP))…
分布式锁的实现(java)
当对接第三方接口时,往往会碰到同一时间发送了大量相同的请求,这个时候或许就是第三方发送接口的失误了。而我们需要做的就是针对这个情况来强化我们的系统。这个时候就需要用到分布式锁。让这些请求只有一个能发送进来。 分布式锁…
Redis系列-生产应用篇-分布式锁(5)-单进程Redis分布式锁的Java实现(Redisson使用与底层实现)-原子锁类
Redisson单进程Redis分布式乐观锁的使用与实现 本文基于Redisson 3.7.5 4. 原子锁类 Redisson中实现了两种原子锁类:RAtomicLong和RAtomicDouble,还有RLongAd…
java 同步 异步 (2)-- synchronized锁住的是代码还是对象
在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。 关键…
java学习笔记之多线程的锁接口Lock
众所周知,多线程的弊端是会使代码受到并发访问的干扰,解决的办法就是同步机制。同步的两种常见形式分别是同步代码块和同步函数,两种形式的锁都是隐式锁,前者持有的锁可以是任…
Java面试题分布式篇一篇文章搞明白分布式锁
前言 以前一直用redis作为分布式锁的实现,也知道zookeeper可以实现,但是对于分布式锁没有系统梳理,忽略了数据库作为分布式锁的重要应用,本文主要梳理分布式锁实现的主要思路: 按照加锁位置,分为在应用层,缓存层,…
JAVA对象锁与类锁
1、被syncronized修饰的方法,是对类的对象加锁,也就是说,当对象访问该方法时,当前的对象会被加锁,同一时刻同一对象不能再访问该方法,或者该对象的其他被syncronized修饰的方法。不同对象,同一时刻可以访问…
Java---16---多线程---死锁
死锁: 概念: 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用。它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死…
Java中常见的锁的一些总结
Java中常见的锁类型 常见的锁分类大致有:排它锁、共享锁、乐观锁、悲观锁、分段锁、自旋锁、公平锁、非公平锁、可重入锁等。 排他锁和共享锁 synchronized就是一个排他锁,ReentrantLock也是一个排它锁…
JAVA并发-减少锁的竞争
降低锁的竞争可以提高并发程序的性能和可伸缩性,有3种方式可以降低锁的竞争: 1. 减少锁的持有时间(缩小锁的范围) 2. 降低锁的请求频率(降低锁的粒度) 3. 放弃使用独占锁,使用…