- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 基于AtomicBoolean实现的简易锁
package cn.mn.app.ls;import java.util.Queue;import java.util.concurrent.ConcurrentLinkedQueue;import java.util.concurrent.atomic.AtomicBoolean;import java.util.concurrent.locks.LockSupport;/**...
2018-08-30 16:00:20 1270
转载 【转】AtomicInteger 原理
深入解析Java AtomicInteger原子类型在进行并发编程的时候我们需要确保程序在被多个线程并发访问时可以得到正确的结果,也就是实现线程安全。线程安全的定义如下:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的。举个线程不安全的例子。假如我们想实...
2018-08-29 11:30:43 664
原创 java创建对象的几种方式
通常的做法是:(1)分配内存。(2)把内存地址压入操作数栈顶。(3)调用构造器。常用的方式如 new;创建反射对象,调用newInsatance;创建反射对象,创建构造器,调用newInstance。这三种方式都是都需要调用构造器,并且第一种反射的方式,需要无参构造器,第二种反射,需要知道构造器参数类型,都离不开构造器。还有一种方式可以不适用构造器,那就是Unsafe调用all...
2018-08-28 19:43:32 592
转载 【转】LockSupport 原理
一、前言 最开始打算分析ReentrantLock,但是分析到最后,发现离不开LockSuport的支持,所以,索性就先开始分析LockSupport,因为它是锁中的基础,是一个提供锁机制的工具类,所以先对其进行分析。二、LockSupport源码分析 2.1 类的属性 public class LockSupport { // Hotspot impleme...
2018-08-28 17:28:57 2288
转载 【转】ConcurrentLinkedQueue 原理
一、 前言常用的并发队列有阻塞队列和非阻塞队列,前者使用锁实现,后者则使用CAS非阻塞算法实现,使用非阻塞队列一般性能比较好,下面就看看常用的非阻塞ConcurrentLinkedQueue是如何使用CAS实现的。二、 ConcurrentLinkedQueue类图结构如图ConcurrentLinkedQueue中有两个volatile类型的Node节点分别用来存在列表的首尾节点...
2018-08-28 10:47:38 213
原创 SpringCloud feign无法注入接口
接口:package cn.mn.app.service;import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotat...
2018-08-16 19:16:10 22123 13
原创 LinkedBlockingQueue 源码
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementExceptio...
2018-08-13 20:07:17 502
原创 CyclicBarrier 源码
package cn.cyc.n1;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.LockSupport;...
2018-08-09 14:51:20 173
原创 Semaphore 源码
package cn.semaphore.n1;import java.util.concurrent.Semaphore;public class Pool { private static final int MAX_AVAILABLE=2; private final Semaphore available=new Semaphore(MAX_AVAILABLE, true);...
2018-08-07 20:11:53 150
原创 futureTask 源码
private static final int NEW = 0; //任务新建和执行中private static final int COMPLETING = 1; //任务将要执行完毕private static final int NORMAL = 2; //任务正常执行结束private static final int EXCEPTIONAL ...
2018-08-07 11:02:22 280
转载 【转】FutureTask实现原理
uture是我们在使用java实现异步时最常用到的一个类,我们可以向线程池提交一个Callable,并通过future对象获取执行结果。本篇文章主要讲述了JUC中FutureTask中的一些实现原理。使用的jdk版本是1.7。Future Future是一个接口,它定义了5个方法: 1 2 3 4 5 boolean can...
2018-08-07 10:59:05 1765
原创 CountDownLatch 源码
CountDownLatch(int count) 构造器:如果资源数<0 抛出异常。设置aqs资源数为count。await() 等待,使用AQS共享模式获取资源,中断抛出异常。 尝试获取资源:如果剩余资源数为0成功返回,非0失败返回。countDown() 释放资源,使用AQS共享模式释放资源,尝试释放资源:自旋 如果剩余资源数为0,失败返回,否则 cas修改剩余资源数-1,如果...
2018-08-01 19:31:05 137
rocketmq-console.zip
2021-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人