- 博客(9)
- 收藏
- 关注
原创 spring boot集成Redis Sentinel(哨兵模式)
1、在pom.xml文件中添加依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis</artifactId><version>1.4.7.RELEASE</versio...
2019-05-28 10:31:28 1277 1
原创 spring boot集成HttpClient连接池
1、在pom.xml中添加httpclient的依赖<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.8</version></de...
2019-05-28 10:11:22 6270 1
原创 ThreadLocal实现原理与源码分析
ThreadLocal底层实现内部类:ThreadLocalMap一、ThreadLocal的set方法源码分析:(1)public void set(T value) {Thread t = Thread.currentThread();ThreadLocalMap map = getMap(t);if (map != null)map.set(this, va...
2019-05-27 18:12:43 251
原创 CountDownLatch使用案例
应用场景:应用于主线程等待所有子线程结束后再继续执行的情况。案例:比如赛跑,每个运动员看做一个子线程,裁判就是主线程,裁判发令(设置一个值为1的计数器,发令之前所有子线程await等待命令,裁判员发令让计数置为0,所有子线程同时开跑)所有运动员开跑后,需要等待所有人跑完再统计成绩(设置一个值为运动员数目的计数器,所有运动员开跑后裁判await被阻塞,每个运动员跑完的时候count...
2019-05-19 23:53:00 419
原创 volatile解析
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized ...
2019-05-19 23:52:10 95
原创 CyclicBarrier应用案例讲解
由于CyclicBarrier计数达到指定后会重新循环使用,所以CyclicBarrier可以用在所有子线程之间互相等待多次的情形。比如在某种需求中,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择CyclicBarrier了。应用场景:一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候...
2019-05-19 23:36:26 166
原创 jmap以及MAT定位jvm堆内存问题
【针对jdk1.8以后】获取运行的pid:ps -ef|grep java或者是 jps1、jmap命令使用:常用命令:(1)jmap -heap pid【查看快要发生FGC】打印heap的概要信息,GC使用的算法,heap的配置及使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况C:\Program Files\Java\jdk1.8.0_172\bin>...
2019-05-13 00:54:33 1058
原创 static静态方法执行--内存分析
1、static方法与非static方法区别:● 生命周期(Lifecycle):静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。非静态方法(Non-Static Method)又叫实例化方法,属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当...
2019-05-07 00:52:35 3812
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人