摘要:
可重入锁与不可重入锁 引言 本节介绍的是可重入锁和不可重入锁。可指的是可以,不可指的是不可以。重入指的是重复进入同步作用域。这里的同步作用域可以是同步代码块,也可以是同步方法或者是lock锁同步代码,无论是进入哪一个同步作用域,都意味着同步锁被重复使用。所以重入也有重复使用同步锁的意思。锁指的是同步 阅读全文
摘要:
Lock锁的等待唤醒机制(Condition) lock锁的等待唤醒机制和synchronize的等待唤醒机制稍微有点不同,lock锁的等待唤醒机制主要是靠condition实现的,condition是通过lock锁的new condition方法获取的,该方法返回一个绑定到lock锁上的condi 阅读全文
摘要:
非阻塞式获取锁 引言 本节介绍一个和lock锁相关的知识点,非阻塞式获取锁。有非阻塞式就有阻塞式,下面通过两个动画来帮助我们理解他们的意思,以上厕锁为例, 我们先来看阻塞式上厕锁,一群人排着队,依次等待上厕锁。换成线程来说的话,就是一群线程排着队获取锁,只要是等待,那就是阻塞。线程阻塞锁的就是线程在 阅读全文
摘要:
显式锁(Lock)的使用 引言 在已经有了同步关键字synchronize的的情况下,Java依然在5.0版本中新增了一个同步锁对象lock.又称显示锁,之锁以新增它,是因为synchronize有一些不足,究竟synchronize有哪些不足?在后续课程synchronize与lock的区别,一节 阅读全文
摘要:
wait与sleep的区别 引言 本节介绍wait方法与sleep方法的区别,一共有7件不同 位置 首先来看第一点位置,sleep方法是线程方法,它位于thread内里面,而wait方法是锁方法,它位于object类里面, 这里展示的是sleep方法锁处的位置以及方法个数。 同样的这里展示的是wai 阅读全文
摘要:
线程间通讯(wait、notify应用) 引言 线程间如何通讯?通讯的方式其实有好几种,其中有一种就是wait,notify方式,与此相关的,还有一个比较经典的例子,那就是生产者与消费者,生产者指的是生产者线程,消费者指的是消费者线程,生产者线程负责生产数据,消费者线程负责消费数据 数据还没生产的时 阅读全文
摘要:
等待唤醒机制(wait、notify) 引言 本节介绍一个和同步锁都相关的知识点,等待唤醒机制。下面从3点来介绍等待唤醒机制。 第一点是当前线程等待, 第二点唤醒单个等待的线程, 第三点唤醒所有等待的线程。 使当前线程等待 首先来看第一点,使当前线程等待,使用wait方法即可让当前线程等待, 该方法 阅读全文
摘要:
死锁是如何产生的 引言 本节介绍一个和同步所相关的知识点死锁。下面从3点来介绍死锁。 第一点什么是死锁? 第二点死锁是如何产生的? 第三点编写一个死锁示例。 什么是死锁? 首先来看第一点,什么是死锁?死锁是指两个或两个以上的线程,在执行过程中,由于竞争资源或者是由于彼此通信而造成的一种阻塞现象,若无 阅读全文
摘要:
同一把锁 引言 本节给大家演示一下,多个线程争夺同一把锁和不同锁的场景。 同一把锁 首先自定义一个任务,任务内容就是两个线程分别去执行两个不同的同步代码块,如何做到这一点?我们可以定义一个Boolean类型的标记,然后通过标记来切换不同线程去执行不同的代码块。所以这里我们还要定义一个更改标记的方法用 阅读全文
摘要:
同步锁的类型有哪些 引言 本节介绍一个和同步相关的知识点,同步锁,什么是同步锁? 我们先来看一下它的概念,同步锁是为了保证每个线程都能正常执行原子不可更改操作,同步监听对象/同步锁/同步监听器/互斥锁的一个标记锁。 我们这里先要说明一下,同步监听对象/同步锁/同步监听器/互斥锁,他们表示的都是同一个 阅读全文