自定义博客皮肤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)
  • 资源 (5)
  • 收藏
  • 关注

转载 java关键字-final语义

转载:http://www.infoq.com/cn/articles/java-memory-model-6/ 对java关键字final的解析,以前都没关注过final竟然这些东西。与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被

2016-05-24 17:09:39 1797

原创 JUC源码分析14-集合-HashMap

在学习juc并发集合前先看了下HashMap,听说好多面试会问这个,没遇见过,学习下吧。学习的jdk源码一直都是1.7版本的,其他版本可能有些微不同,应该也不影响学习。HashMap有几点需要记得吧:1.是非线程安全的:javadoc说明:可以通过Map m = Collections.synchronizedMap(new HashMap(...));解决,或者干脆用juc里面Concu

2016-05-20 12:04:17 4068

原创 JUC源码分析13-locks-ReentrantReadWriteLock

ReentrantReadWriteLock基于AQS实现读写锁的同步:1.利用共享模式实现读锁,独占模式实现写锁;2.支持公平和非公平,非公平的情况下可能会出现读锁阻塞写锁的场景;3.写锁阻塞写锁和读锁,读锁阻塞写锁;4.写锁可以降级为读锁,读锁不能升级为写锁,只能先release再lock;5.写锁支持condition条件;6.读写锁都支持超时/中断lock;

2016-05-18 11:23:40 2970

原创 JUC源码分析12-locks-CyclicBarrier

CyclicBarrier字面意思是可循环栅栏,看javadoc的帮助A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point. CyclicBarriers are useful in programs involving a fi

2016-05-13 09:53:18 424

原创 JUC源码分析11-locks-Semaphore

Semaphore不明白为什么直接放在juc包下,不是应该放locks下面嘛,这里还是当初locks学习吧。Semaphore英文是信号量的意思,在这里我喜欢叫资源或者许可,实现的功能就是获取资源,获取到就干活,获取不到就排队,等别人释放了资源,然后所有排队的再去获取。实现AQS的共享api,看个入门demo:public class SemaphoreTest { //3个

2016-05-11 17:37:24 511

原创 JUC源码分析10-locks-CountDownLatch

上一次学习了ReetrantLock,是对AQS独占模式的,这次学习CountDownLatch,是共享模式api的实现。人生不死,学无止境。先看个demo吧:import java.util.concurrent.CountDownLatch;public class CountDownLatchTest { private static CountDownLatch

2016-05-11 09:55:24 797

原创 JUC源码分析9-locks-ReentrantLock

ReentrantLock可重入锁,使用比synchronized方便灵活,可作为替代使用:1.支持公平/不公平锁;2.支持响应超时,响应中断;3.支持condition;ReentrantLock实现了Lock接口,内部使用static类继承AQS实现独占式的api来实现这些功能,使用AQS的state来表示锁可重入次数:之前学习AQS的时候说过请求和rele

2016-05-10 16:14:24 1069

原创 JUC源码分析8-locks-AQS-condition

AQS的conditionObject实现类似object的wait/notify/notify的功能,功能大概是:1.object维护一个监视器和一个等待队列,condition对于一个lock可以有多个condition,对于每个condition维护一个条件队列;2.提供wait/signal/signalall功能。来个入门demo:public class Conditi

2016-05-10 11:57:54 1512 1

原创 JUC源码分析7-locks-AQS-共享模式

AQS中一定要记住2点:1.处理流程:if(!请求成功)加入队列2.请求是对state的判断,AQS不关心你state表示什么,你可以表示状态也可以表示数量,由子类实现对请求的判断。将规则的判断和规则的处理分离,有点像模板模式。先想想什么是独占什么是共享,举个栗子:独占就像大家拿号去排队体检,你拿号了发现前面还有n个人,没办法,等吧,然后你前面的人体检完了,医生就说,你通知下一

2016-05-06 17:42:17 1983 1

原创 JUC源码分析6-locks-AQS-独占模式

AbstractQueuedSynchronizer(下面简称AQS),javadoc说明: Provides a framework for implementing blocking locks and related synchronizers (semaphores, events, etc) that rely on  first-in-first-out (FIFO) wait que

2016-05-06 14:05:26 1276

原创 JUC源码分析5-locks-LockSupport

LockSupport通过unsafe提供阻塞和唤醒线程的方法,AQS和其他的lock都会使用到这个基础类。private LockSupport() {} // Cannot be instantiated.private static final Unsafe unsafe = Unsafe.getUnsafe();private static final long parkBl

2016-05-04 11:58:53 741

原创 JUC源码分析4-原子变量-AtomicStampedReference/AtomicMarkableReference

之前讲过的AtomicInteger等CAS操作会产生ABA问题,什么是ABA?wiki官方解释https://en.wikipedia.org/wiki/ABA_problem,简单讲就是多线程环境,2次读写中一个线程修改A->B,然后又B->A,另一个线程看到的值未改变,又继续修改成自己的期望值。如果我们不关心中间状态的变化,只关心最终结果,就无所谓ABA问题。看代码:import jav

2016-05-04 10:12:11 1607

springboot2.X+maven+mybatis+shiro+redis

之前看的一哥们的springboot整合shiro的demo,springboot是1.X,自己改成了2.X,其他基本相同,部署请看https://blog.csdn.net/xiaoxufox/article/details/88965235

2019-04-02

javaConcurrentAnimated

动画演示java并发库的API javaConcurrentAnimated

2015-12-11

一致性hashjava实现

别人写的一个一致性hash的java实现,分享下

2015-12-10

ActiveObject

多线程设计模式-activeObject代码

2015-12-07

mybase管理

myBaseDesktop6破解版可以用来做知识库管理,力挺

2013-01-27

空空如也

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

TA关注的人

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