
锁与线程
scaling_heights
scaling_heights
展开
-
分布式方案
我们经常提到的锁是在一个JVM内,加线程同步锁,例如 synchronize 或者 Lock锁,分布式的场景在多个服务之间,例如多个RPC接口之间,他们在不同的JVM内 例如多个RPC接口共同操作同一个资源的时候就要考虑到用一个公共资源来实现分布式锁的控制. 谈到分布式锁,有很多实现方式,如数据库、redis、 ZooKeeper等。 1.1方案一(redis) 利用redis单线程的特性和setnx命令加锁,其中key是锁,value是锁的过期时间, 1. 通过setnx()方法尝试加锁,如果当前锁不.原创 2021-04-08 23:15:18 · 118 阅读 · 0 评论 -
volatile synchronized
volatile和synchronized到底啥区别? 1)volatile 与 synchronized 在处理哪些问题是相对等价的? 2)为什么说 volatile 是 synchronized 弱同步的方式? 3)volatile 除了可见性问题,还能解决什么问题? 4)二者我要如何选择使用? 都听过【天上一天,地下一年】, 假设 CPU 执行一条普通指令需要一天,那么 CPU 读写内存就得等待一年的时间。 受【木桶原理】的限制,在CPU眼里,程序的整体性能都被内存的办事效率拉低了, 为了解决这.原创 2021-03-06 23:23:04 · 93 阅读 · 0 评论 -
ReentrantLock
package example.thread.future; public interface IFuture<R> { public R get() throws InterruptedException; public void set(R r); } package example.thread.future.impl; import example.thread.future.IFuture; import java.util.concurrent.Ti.原创 2021-03-06 00:03:09 · 103 阅读 · 0 评论 -
锁Lock核心原理
import org.apache.log4j.Logger; import sun.misc.Unsafe; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.concurrent.BrokenBarrierException; import java.util.concurr.原创 2020-11-12 23:32:22 · 222 阅读 · 0 评论