摘要: 我们接着上一篇文章继续,本文讲讲解ReentrantLock 公平锁和非公平锁的区别,深入分析 AbstractQueuedSynchronizer 中的 ConditionObject 公平锁和非公平锁 ReentrantLock 默认采用非公平锁,除非你在构造方法中传入参数 true 。 pub 阅读全文
posted @ 2018-12-28 10:09 chen_hao 阅读(1331) 评论(1) 推荐(2) 编辑
摘要: 本文将从 ReentrantLock 的公平锁源码出发,分析下 AbstractQueuedSynchronizer 这个类是怎么工作的,希望能给大家提供一些简单的帮助。 AQS 结构 先来看看 AQS 有哪些属性,搞清楚这些基本就知道 AQS 是什么套路了! AbstractQueuedSynch 阅读全文
posted @ 2018-12-26 10:16 chen_hao 阅读(2087) 评论(1) 推荐(2) 编辑
摘要: 今天我们一起探讨下ThreadLocal的实现原理和源码分析。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。相信本文一定能让大家完全了解ThreadLocal。 ThreadLocal是什么? T 阅读全文
posted @ 2018-12-07 09:25 chen_hao 阅读(1720) 评论(0) 推荐(5) 编辑
摘要: ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Synchronized,ReentrantLock增加了一些高级的扩展功能,比如它可以实现公平锁,同时也可 阅读全文
posted @ 2018-11-29 11:57 chen_hao 阅读(5656) 评论(2) 推荐(3) 编辑
摘要: 本文将讲解CountDownLatch,CyclicBarrier和Semaphore这三个并发包里面的辅助类。 本文将讲解CountDownLatch,CyclicBarrier和Semaphore这三个并发包里面的辅助类。 CountDownLatch 正如每个Java文档所描述的那样,Coun 阅读全文
posted @ 2018-11-23 15:23 chen_hao 阅读(2442) 评论(0) 推荐(3) 编辑
摘要: 本文将讲解volatile关键字和 atomic包,为什么放到一起讲呢,主要是因为这两个可以解决并发编程中的原子性、可见性、有序性,让我们一起来看看吧。 本文将讲解volatile关键字和 atomic包,为什么放到一起讲呢,主要是因为这两个可以解决并发编程中的原子性、可见性、有序性,让我们一起来看 阅读全文
posted @ 2018-11-16 16:45 chen_hao 阅读(8800) 评论(3) 推荐(14) 编辑
摘要: 这篇博客介绍线程安全的应用——单例模式。 单例模式 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。 双重校验锁 实例: /** * @author: ChenHao * 关于懒 阅读全文
posted @ 2018-11-04 10:41 chen_hao 阅读(1563) 评论(4) 推荐(2) 编辑
摘要: 这篇博客介绍线程的生命周期。 线程是一个动态执行的过程,它也有从创建到死亡的过程。 线程的几种状态 在 Thread 类中,有一个枚举内部类: 上面的信息以图片表示如下: 第一张图: 第二张图:把等待、计时等待、阻塞看成阻塞一个状态了 1、新建状态(new):使用 new 创建一个线程,仅仅只是在堆 阅读全文
posted @ 2018-11-03 13:12 chen_hao 阅读(1613) 评论(1) 推荐(3) 编辑
摘要: 上文创建多线程买票的例子中注释会出现错票、重票的问题,本文来讲讲如何解决此问题。本文例子:利用多线程模拟 3 个窗口卖票 上文创建多线程买票的例子中注释会出现错票、重票的问题,本文来讲讲如何解决此问题。本文例子:利用多线程模拟 3 个窗口卖票 实现Runnable接口 public class Te 阅读全文
posted @ 2018-11-02 17:26 chen_hao 阅读(1463) 评论(2) 推荐(4) 编辑
摘要: 并发和并行 并行:指两个或多个时间在同一时刻发生(同时发生); 并发:指两个或多个事件在一个时间段内发生。 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行 阅读全文
posted @ 2018-11-02 10:58 chen_hao 阅读(1906) 评论(2) 推荐(8) 编辑