并发
都是底层
这个作者很懒,什么都没留下…
展开
-
并发 AtomicInteger 中incrementAndGet方法详解
public final int incrementAndGet() { return unsafe.getAndAddInt(this, valueOffset, 1) + 1; } private static final long valueOffset; static { try { valueOffset = unsafe.objectFieldOffset (AtomicInte.原创 2021-09-09 11:51:37 · 2352 阅读 · 3 评论 -
为什么wait/notify/notifyAll被定义在Object类中,而sleep定义在Thread类中,wait/notify和sleep方法的异同
为什么wait/notify/notifyAll被定义在Object类中,而sleep定义在Thread类中因为java中每个对象都有一把称之为monitor监控器的锁由于每个对象都可以上锁,这就要求在对象头中有一个用来保存锁信息的位置这个锁是对象级别多大,而非线程级别的,wait/notify/notifyAll也都是锁级别的操作,他们的锁属于对象所以把他们定义在Object类中最合适,因为Objecct类是所有对象的父类因为如果把wait/notify/notifyAll方法定义在Thre原创 2020-07-14 17:14:23 · 4668 阅读 · 0 评论 -
springboot中分布式锁的实现
Redisson项目介绍Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数据库提供的一系列优势,基于Java实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同...原创 2019-12-13 15:45:19 · 3839 阅读 · 1 评论 -
CountDownLatch
/** * 闭锁:CountDownLatch在完成某些运算时,只有其他所有线程的运算全部完成,当前运算才继续执行 * @author lijinping */public class TestCountDownLatch { public static void main(String[] args) { final CountDownLatch latch = new Coun...原创 2019-06-19 15:34:25 · 3955 阅读 · 0 评论 -
创建线程的方式Callable
/** * 一、创建线程的方式Callable 实现Callable接口相较于实现Runnable接口的方式,方法可以有返回值,并且可以抛出异常 * 二、执行Callable方式,需要FutureTask实现类的支持,用于接受运算结果。FutureTask是Future接口的实现类 */public class TestCallable { public static vo...原创 2019-06-19 16:00:56 · 4315 阅读 · 0 评论