![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 87
iteye_9153
这个作者很懒,什么都没留下…
展开
-
并发编程之线程同步锁
线程同步的风险 使用多线程可以让你充分利用多核处理器的资源,更简单的处理异步事件等。但是多线程有3个非常需要关注和解决的风险: 1.安全性风险:即每一次系统运行的最终结果都是与预期相符的,不会产生各种稀奇古怪无法预知的结果。 2.活动度风险:即预期会发生的事件最终会发生,而不是进入一种永远不会发生的状态。一个典型的事件就是死锁。 3.性能风险...原创 2014-08-13 18:43:19 · 116 阅读 · 0 评论 -
akka学习之java内存模型JMM
使用类型安全平台(包括scala和akka在内)的一个目的是,它能使编写并发软件变得简单。本章主要介绍类型安全平台,特别是akka,是如何在并发应用中处理共享内存的。 java内存模型JMM 在jdk 5之前的版本中,java内存模型的定义并不是很好。当多线程访问共享内存时,可能会得到各种千奇百怪的结果,比如: 看见性问题:一个线程看不到另一个...原创 2014-12-22 20:11:46 · 141 阅读 · 0 评论 -
akka学习之位置透明性
上一章akka学习之actor引用,路径和地址介绍了如何使用actor路径来让actor的位置变得透明。但是一些特殊的特性有必要再额外介绍下,因为在不同的编程语言,平台和技术环境中,远程透明的意思非常也不一样。 默认分布式 在akka中,每件事情的设计目的都是工作在分布式环境中的:所有actor之间的交互都是通过纯粹的消息传递来实现的所有的事件都是异步的。akka...原创 2014-12-19 19:33:04 · 193 阅读 · 0 评论 -
akka学习之actor引用,路径和地址
这章主要介绍在分布式akka系统中actor是如何识别和寻址的。它的主要思想是actor系统本身形成的内在监护层级结构以及跨多个网络节点中actor之间的通信是位置透明的。 上面这张图描述了akka系统中主要的几种实体之间的关系,下面将对这张关系图做详细介绍。 actor引用 actor引用是actorRef的子类,它最重要的作用就是支持发生消息给它所代...原创 2014-12-18 21:59:02 · 340 阅读 · 0 评论 -
akka学习之actor监护与监控
在前面的章节akka学习之actor介绍中介绍了actor对ziactor有监护职责,同时actor对其他actor的生命周期等信息进行监控。这张将详细解释什么是监护和监控。什么是监护(supervision)在actor系统,一个actor(上司也可以成为监护人)可以创建子actor(下属),然后可以分配任务给他的下属去执行,同时也要对下属的错误负责,上司也是下属的监护...原创 2014-12-13 13:45:32 · 215 阅读 · 0 评论 -
akka学习之actor系统介绍
actor系统 前面讲过actor其实是封装了状态和行为的对象,actor之间唯一的通信方式是通过接收者的邮箱交换信息。为了更好的了解actor系统,可能把它类比为人群会更好理解些。在使用actor来对解决方案建模时,把actor想象成一群人,把子任务分配给他们,将他们的功能整理成一个有组织的结构,同时考虑将失败情况向上级汇报。这样的就可以在脑中形成进行软件实现的框架。actor...原创 2014-12-10 18:39:21 · 216 阅读 · 0 评论 -
akka学习之actor介绍
什么是actor 在上面一章大致提到了akka使用actor对象来处理任务。那么在真正深入学习akka之前,必须先知道什么是actor。actor在语言层面上来说,就是一个对象,但是从功能层面上来说,也可以把它看成一个容器,它包含了自己的状态,处理任务的行为,接收消息的邮箱,子actor以及对子actor的监管策略等内容。所有的这些东西都被封装在actor里面,而一个actor只能通...原创 2014-12-09 17:48:17 · 212 阅读 · 0 评论 -
并发编程之akka简介
什么是akka akka是一个用scala编写的库,用于简化编写可容错的,可扩展的,高并发应用。akka使用actor模型来提升抽象能力,提供更好的平台来构建可扩展的,弹性的应用。对于比较难处理的错误,akka采用“let it crash”模型来处理,这种模式可以使得一个任务的处理失败不会导致整个应用的crash,使你的系统拥有强大的自愈能力,也不需要重启来恢复系统。同时akka的...原创 2014-12-02 19:52:50 · 153 阅读 · 0 评论 -
并发编程之FutureTask的实现解析
简介 很多时候我们希望创建一个新线程去执行一个功能相对独立的任务,并在任务完成之后返回执行结果。如果实现Runnable接口,没有办法获得返回值;如果实现Callable接口,必须使用ExecutorService来执行,不能使用更简单灵活的new thread方法来实现。为了解决上面两个问题,于是有了FutureTask。FutureTask实现了Runnable, Fut...原创 2014-11-12 18:52:58 · 128 阅读 · 0 评论 -
并发编程之线程池ScheduledThreadPoolExecutor原理探究
简介 上一篇文章剖析了ThreadPoolExecutor的原理和实现,这里剖析下ScheduledThreadPoolExecutor的实现方式。ScheduledThreadPoolExecuto能够执行延迟固定时间的任务和周期性任务。在需要多工作线程的情况下,它比Timer更方便,同时比ThreadPoolExecutor有更大灵活性和能力。 但是在使用S...原创 2014-10-28 12:25:26 · 238 阅读 · 0 评论 -
并发编程之线程池ThreadPoolExecutor原理探究
当前越来越多的系统使用多线程来处理任务,但是为每一个任务创建线程并不是合理的方案,原因有2点:一是创建线程的开销很大,一个任务一个线程的方式会有性能上的损失;二是可能导致线程数量的膨胀,不但不易于线程的管理,还可能导致内存被消耗完,导致out of memory(OOM),从而使系统崩溃。为了解决这个问题,线程池应运而生。线程池有两个作用:一个是限制线程的数量,不会导致线程的膨...原创 2014-10-22 19:25:22 · 116 阅读 · 0 评论 -
并发编程之AbstractQueuedSynchronizer原理剖析
简介 在java同步锁中,除了synchronized关键字之外,还有很多更灵活的显式锁可供选择,比如ReentrantLock,ReentrantReadWriteLock等。甚至如果jdk中的锁不能满足你的需求,你还可以自己来定义自己的显式锁。显式锁都是实现Lock接口,需要自己实现比如lock(),unlock(),trylock()等方法。而lock接口方法的实...原创 2014-10-20 19:10:53 · 111 阅读 · 0 评论 -
并发编程之读写锁ReentrantReadWriteLock实现
引子 我们团队有维护这样一个类似比价的系统。其中有一个A方法需要查询好几个第三方的http接口,以获取某些信息进行汇总分析。虽然是通过多线程并发的去访问第三方接口,但是有些第三方系统不稳定,只要其中一个挂了就会影响整个方法的效率。团队成员经常在接到报警信息之后手动把不稳定的接口下线,这给大家的正常生活带来了麻烦,因为你有时候不得不不周末或者半夜起来操作。于是我做了一个自动下线功能,假如...原创 2014-10-01 22:30:05 · 95 阅读 · 0 评论 -
并发编程之任务&线程的取消与关闭
任务或线程的取消与关闭在向线程提交任务并且任务开始执行之后,通常任务执行完就自行停止和结束了,但是很多时候,我们希望在任务自行结束之前能提前终止,比如用户进行了取消操作等。具体来说,取消操作分为以下几种:用户请求的取消操:比如用户按取消按钮,通过管理接口请求取消等;超时停止:比如请求某个http请求,希望在指定时间还没返回结果时取消任务。应用程序事件:比如寻找迷宫出口,如果有一...原创 2014-08-26 11:19:34 · 152 阅读 · 0 评论 -
并发编程之安全发布对象
对象发布(publish) 发布一个对象是使它能够在被当前范围之外的代码所使用。比如创建一个对象之后,提供一个非私有方法返回这个对象的引用,或者把它传递到其他类的方法中。下面是常见的发布对象的例子:1.把对象的引用保存到静态公有域中public static List<Object> objectList; public void initList()...原创 2014-08-19 10:27:08 · 69 阅读 · 0 评论 -
akka学习之消息传递的可靠性
消息传递可靠性 akka帮助我们在单机多核处理器或多服务器分布式系统中构建可靠性强的的应用系统。为了实现这一点,关键是在你的代码单元的交互中(也就是actor)的交互只通过消息传递来实现。因此值得花一章的篇幅来重点介绍消息时如何在actor之间传递的。 这里先假设一个跨多网络服务器的系统作为下面将讨论的内容的上下文环境,因为跨网络消息传递需要更多的可靠性保证。...原创 2015-01-28 19:46:58 · 403 阅读 · 0 评论