摘要: 一 . 概述 在JDK5之前,我们都需要使用synchronized来完成内置锁的实现同步效果,Synchronized的操作力度过大,因而出现了一个替代的产品ReentrantLock(可重入锁). 二 .可重入锁的基本使用 在这里我们还是使用前面的计数操作完成演示. 我们看到可重入锁的使用非常简 阅读全文
posted @ 2018-05-07 23:07 最爱五仁月饼 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 一 . 概述 在之前我们讨论过线程的高效的提升方式,在JUC之中提供了各种方式来提升并发的效果. 其中大多数的并发容器,并发辅助类,队列等都使用了一个类,这个类就是AQS. 可以这么说AQS完成了JUC的大部分底层实现. 二 .AQS的介绍 AbstractQueuedSynchronizer(抽象 阅读全文
posted @ 2018-05-07 22:36 最爱五仁月饼 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 一 . 概述 上一节中我们提到了Future对象,是从Callable接口中封装返回接口的对象. 这一节就说一下Future接口. 二 .Future接口 这个接口总的来说就是描述了返回结果的对象,这是一个异步的方式.只有调用了get()方法的时候会发生阻塞现象. 三 总结 在这里我们不去说异步的问 阅读全文
posted @ 2018-05-07 21:59 最爱五仁月饼 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 一 .概述 在前面,我们创建线程总是需要实现run()方法,无论继承还是实现run()方法. 我们首先看一下run()方法的结构. 我们首先看到的是run()方法没有返回值,没有异常声明. 这也就决定我们使用run()方法会有一点麻烦的地方. [1]返回值我们需要特殊处理 [2]异常的问题有些麻烦, 阅读全文
posted @ 2018-05-07 21:46 最爱五仁月饼 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 一 . 概述 在前面我们介绍了线程的同步和通信的方式,其根本就是在线程并发的时候更好的保证线程的安全性,可见性,有序性. 总的来说,就是将线程的不可控制的特性尽量降低,在正确和性能之间寻找平衡点. 控制就意味性能的降低,但是我们需要控制来保证安全性. 总的来说,现在就是我们寻找线程的平衡点的一个时机 阅读全文
posted @ 2018-05-07 21:27 最爱五仁月饼 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 一 . 概述 在前面我们使用各种方式解决了线程的安全性问题,无论是加锁和是使用无锁的方式,本质上讲都是控制线程的执行顺序. 但是前面对线程的控制顺序还只是出于粗粒度的控制,我们常常希望看到的是一个线程完成任务然后激发另外一个线程的线程任务的执行, 或者两个线程交互完成任务(生产者生产一个产品,消费者 阅读全文
posted @ 2018-05-07 20:41 最爱五仁月饼 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 一 .概述 在之前我们讨论过线程安全性的问题,我们通过加锁或者使用无锁来保证线程安全. 当然无锁的性能会变得更好.但是他们的实质的核心都是保证对访问的资源的原子性. 那我们回忆一下线程安全性问题的发生的条件: [1]多线程并发 [2]共享资源 [3]对共享资源的非原子性操作 我们如果将共享资源打破掉 阅读全文
posted @ 2018-05-07 20:16 最爱五仁月饼 阅读(212) 评论(0) 推荐(0) 编辑