自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

seaicelin的博客

坚持吧,少年!用心做好每件事~

  • 博客(12)
  • 收藏
  • 关注

原创 [Java并发编程实战]协作对象之间存在的死锁问题

百川东到海,何日复西归?少壮不努力,老大徒伤悲。———《汉乐府·长歌行》 河水东流不复返就如时间的流逝不可能停留,告诫我们年少时如果不珍惜时间努力向上,到老只能白白地悔恨自己与悲伤了。上文讲解了锁顺序死锁发生的情况,但是还存在一些死锁的情况,不是顺序锁那么简单可以被发现。因为有可能并不是在同一个方法中显示请求两个锁,而是嵌套另一个方法去获取第二个锁。我们举个例子来说明,下面代...

2018-06-30 11:32:43 2835

原创 [Java并发编程实战]什么是锁顺序死锁

精诚所至,金石为开。———《后汉书·广陵思王荆传》 意思是人的诚心所到,能感动天地,使金石为之开裂。比喻只要专心诚意去做,什么疑难问题都能解决。锁顺序死锁两个线程试图通过不同的顺序获取多个相同的锁。如果请求的顺序不相同,那么会出现循环的锁依赖现象,产生死锁。但是如果保证同时请求锁L和锁M的每一个线程,都是按照从 L 到 M 的顺序,那么就不会发生死锁了。举个例子说明一下,...

2018-06-30 00:07:17 1002

原创 [Java并发编程实战]线程池的饱和策略

有志者,事竟成。———《后汉书·耿弇传》 一个有志气的人,做事情是一定会成功的!通常情况下,线程池会判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线程来执行任务。但是如果有限队列已经满了,则会交给饱和策略来处理这个任务。ThreadPoolExecutor 的饱和策略可以通过调用 setRejectedExecutionHandler 来修改。JDK 提供了...

2018-06-28 00:02:33 1925

原创 [Java并发编程实战] 线程池的使用之饥饿死锁的发生

一屋不扫何以扫天下?———《后汉书·陈蕃传》 这句话的意思是,从一点一滴的小事开始积累,才能做成一番大事业。Executor框架核心之一就是利用线程池,所以接下来这几篇,详细介绍线程池相关的高级选项以及注意事项。任务间隐性耦合的说明虽说 Exectuor 将任务和执行策略解耦,但是实际上言过其实了。假如任务之间存在某种相互依赖关系,其中一个任务必须依赖另外一个的执行,这就...

2018-06-26 23:54:21 1606 1

原创 [Java并发编程实战]管理 Executor 生命周期的几个方法

前文说了 Exectuor 的具体用法,却没有说到如何停止一个任务的执行。所以,本篇文章就来讲解一下 Executor 的生命周期管理。首先,看下这个框架生命周期相关的主要方法。void shutdown();//平缓关闭List<Runnable> shutdownNow(); //强制关闭boolean isShutdown(); //是否关闭boolean is...

2018-06-25 21:40:56 803

原创 [Java并发编程实战] Executor 框架几个常见的实现类介绍(含示例代码)

上一篇文章已经讲了 Executor 的整体框架,其中有提到它的执行的示意流程图。这篇文章就介绍几个常见的实现类的原理和用法,最后通过示例代码,打印 log 来明确它们的执行流程。常见实现类介绍FixedThreadPool 详解SingleThreadExecutorCachedThreadPool代码示例newFixedThreadPool 示例``...

2018-06-22 23:14:05 697

原创 [Java并发编程实战] Executor框架(含思维导图)

Executor 简介Executor 是一个简单的接口,但它却是整个异步任务执行框架的基础,这个框架能支持多种不同类型的任务执行策略。他提供了一种标准的方法将任务的提过过程和执行过程解耦开来,并用 Runnable 来表示任务。Executor 基于生产者-消费者模式,提交任务相当于生产者,执行任务的线程相当于消费者。同时,Executor 的实现还提供了对任务执行的生命周期管理的支持。...

2018-06-11 23:14:03 2066 1

原创 [Java并发编程实战]构建一个高效可复用缓存程序(含代码)

这几天更新了这么多篇文章,其实这些都是并发编程中最基础的知识。现在,我们是时候利用这些知识来写一个小程序了。本篇文章就来介绍如何构建一个用来存储计算结果的高效、可伸缩高速缓存,虽然简单,但也可以说算是对前面知识的一次运用了。高速缓存,无论是在服务器端还是在前端程序中都有不同形式机制的实现。复用缓存里的结果可以大大缩短程序的等待时间,提高吞吐量。说的通俗一点就是利用空间换时间。在本篇文章中,将一...

2018-06-08 23:37:10 935 1

原创 [Java并发编程实战] Future+callable+FutureTask 闭锁机制(含示例代码)

FutureTask 也可以做闭锁,它是 Future 和 callable 的结合体。所以我们有必要来了解 FutureTask的继承关系。FutureTask 的继承关系类图先看 FutureTask 类的继承:public class FutureTask<V> implements RunnableFuture<V> 它继承自 Run

2018-06-06 22:31:28 885 1

原创 [Java并发编程] 用 信号量(Semaphore) 实现一个消息池(含代码)

欲穷千里目,更上一层楼。—唐·王之涣《登颧雀楼》 这句诗的意思是:想看到更远更广阔的景物,你就要再上一层楼。想学到更多更深的知识,你就要比原来更努力。Semaphore,计数信号量,用来控制同时访问某个特定资源的线程数量,需要我们设定它的最大访问数量。 Semaphore 管理着一组虚拟许可,许可的初始数量可以通过构造函数来指定。在执行操作时可以首先获取许可,并在使用后释放许可。...

2018-06-05 22:15:34 476

原创 [Java并发编程实战] 栅栏 CyclicBarrier 实现(含代码)

关卡

2018-06-04 07:56:45 1181

原创 六月第一跑

今天是儿童节,本大叔本想趁着这节日找几个朋友聚聚,到市区浪一浪,吃个牛肉火锅,或者木屋烧烤,喝上几杯小酒什么的,享受一下美好的广州夜生活。但是摸了摸日渐微胖的肚子,还是把持住了,老老实实呆在家吧。想起来,距离上次跑步有半个多月了,中间几次想坚持锻炼一下,结果是一次又一次的借口,愣是没有跑成。不行,今晚必须出去跑一跑,减减压,出出汗,享受美好月光。抬起脚,迈开跑,一路风景。路过红色公交站...

2018-06-01 23:32:33 248

空空如也

空空如也

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

TA关注的人

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