- 博客(10)
- 收藏
- 关注

原创 AQS框架-驾驭同步之上
并发编程的核心是对状态变量的管理和维护,使其在多线程下同样具备安全性、可靠性及良好的伸缩性,因此你需要设计一套针对并发环境下的有良好的状态依赖性的管理策略。一般人都会采用条件队列或者显示的condition对象或者标准的同步容器。相信前两种大多数人很熟悉了,就不做记录了,这里我想对几种同步容器做下学习笔记。 从最简单开始,闭锁CountDownLatch 可以看到闭锁还是很简单的,它有一个...
2018-11-11 22:59:48
177

原创 融合spring框架使用队列自定义服务
需求 最近接到公司的这么一个需求,在不使用消息中间件的情况下,开发一个消息发送的框架来异步处理各种服务,以提高系统的吞吐量,具体有以下几点要求: 1.支持数据的可持久化,公司最看重这个 2.服务高可用,公司使用了ngnix做负载均衡,有2台服务器 3.服务队列支持暂停和恢复 4.不侵入其他业务逻辑,也就是要做到低耦合。 接到这个任务后,回去琢磨了一下,觉得应该先设计UML图和数据库。 初次使用E...
2018-09-24 12:24:26
2376
2
原创 ReenTrantLock源码解析
可重入锁在实现上基于AQS框架,内部维护线程的state以及队列(CLH)的waitStatus,大量采用非阻塞算法,在中低量的并发上效率是非常高的。 下面分多种情况分析源码,这里只分析非公平锁。 1.简单应用,不使用条件队列 final ReentrantLock lock=new ReentrantLock(); for (int i = 0; i <2; i...
2018-11-28 13:09:20
750
原创 FutureTask源码分析
Runnable任务类在提交的时候我们并不能检测到运行结果,也不能抛出异常供上层代码捕捉,这个时候就需要有一些标准的阻塞库,能让我们得到结果前阻塞,并且能捕捉异常。FutureTask就是这样一个阻塞库,内部采用的是FILO的非公平链表实现。 测试代码如下: FutureTask<String> task=new FutureTask<String>(new Call...
2018-11-16 12:35:02
474
1
原创 已有的线程安全类中添加功能
现在我们要扩展一个list,不能破坏它原本的安全性以及相关不变约束和后验条件,并且不能修改源码,该如何做呢。 通常首先想到的方法是继承list,扩展代码;其次稍微深入的会用到同步包装器,然后客户端加锁,这种方法一般是可以的;最后可能想到的是使用组合,进而制定一套管理并发访问状态变量的策略。接下来展示者三种方法: 方法一:使用继承 public class BetterVector<E...
2018-10-19 20:51:34
160
原创 java多线程系列之杂谈|第一篇:Thread-Per-Message
含义:将一些额外的操作进行异步处理。 范例程序:Main类委托Host类显示文字。Host启动一个线程来处理这项委托的工作。 顺序图如下: 示例代码: Host package pattern.perthread; public class Host { private final Helper helper=new Helper(); public void...
2018-10-01 00:11:50
476
原创 java多线程系列之模式|第三篇: Producer-Consumer pattern
生产者-消费者模式 含义:顾名思义,生产者用来生产数据,可能有一到多个,消费者用来消费数据,也可能有多个,中间会有一个“桥梁参与者”,作为数据的存放以及线程之间的同步和协调。 范例程序行为: 厨师(MakerThread)做蛋糕,做好后放在桌子(Table)上 桌子最多放3个蛋糕,桌子上有空位才能放置蛋糕 客人(EaterThread)依次取桌子上的蛋糕,桌子上有蛋糕才能取 先放一个顺序...
2018-09-30 12:54:47
300
原创 java多线程系列之模式|第二篇:balking pattern
含义:当警戒条件不成立时,中断请求。 范例:定义一个保存数据的数据类,一个线程不停添加数据并保存,另一个线程定时保存数据,同时保证数据不能重复。 顺序图: 示例代码: Data:数据载体 package pattern.balking; public class Data { private String name; private String content...
2018-09-29 22:23:48
244
原创 java多线程系列之模式|第一篇-Guarded Suspension pattern
多线程开发之Guarded Suspension pattern模式 作者注:该系列文章基于《java线程设计模式》撰写,只用于学习和交流。 简介 多线程运行,当前线程没有达到警戒条件时,线程会进入等待直到被唤醒。 ...
2018-09-29 12:29:46
319
原创 CentOS安装docker
docker定义 百度百科定义: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 一个完整的Docker有以下几个部分组成: 1.dockerClient客户端 2.Docker Daemon守护进程 3.Docker Image镜像 4....
2018-09-25 00:08:50
354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人