自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

男儿当自强

人生来平凡,因奋斗进取而不凡。

  • 博客(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

RocketMQ控制台,下载后对资源解压,修改Pom中RocketMQ版本修改配置文件中RocketMQ nameServer地址,用Maven编译,运行target目录下的jar即可

2021-11-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除