11 2018 档案
摘要:ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Synchronized,ReentrantLock增加了一些高级的扩展功能,比如它可以实现公平锁,同时也可
阅读全文
摘要:本文将讲解CountDownLatch,CyclicBarrier和Semaphore这三个并发包里面的辅助类。 本文将讲解CountDownLatch,CyclicBarrier和Semaphore这三个并发包里面的辅助类。 CountDownLatch 正如每个Java文档所描述的那样,Coun
阅读全文
摘要:本文将讲解volatile关键字和 atomic包,为什么放到一起讲呢,主要是因为这两个可以解决并发编程中的原子性、可见性、有序性,让我们一起来看看吧。 本文将讲解volatile关键字和 atomic包,为什么放到一起讲呢,主要是因为这两个可以解决并发编程中的原子性、可见性、有序性,让我们一起来看
阅读全文
摘要:这篇博客介绍线程安全的应用——单例模式。 单例模式 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。 双重校验锁 实例: /** * @author: ChenHao * 关于懒
阅读全文
摘要:这篇博客介绍线程的生命周期。 线程是一个动态执行的过程,它也有从创建到死亡的过程。 线程的几种状态 在 Thread 类中,有一个枚举内部类: 上面的信息以图片表示如下: 第一张图: 第二张图:把等待、计时等待、阻塞看成阻塞一个状态了 1、新建状态(new):使用 new 创建一个线程,仅仅只是在堆
阅读全文
摘要:上文创建多线程买票的例子中注释会出现错票、重票的问题,本文来讲讲如何解决此问题。本文例子:利用多线程模拟 3 个窗口卖票 上文创建多线程买票的例子中注释会出现错票、重票的问题,本文来讲讲如何解决此问题。本文例子:利用多线程模拟 3 个窗口卖票 实现Runnable接口 public class Te
阅读全文
摘要:并发和并行 并行:指两个或多个时间在同一时刻发生(同时发生); 并发:指两个或多个事件在一个时间段内发生。 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行
阅读全文