使用wait()notify()的前置条件 调用wait()和notify()的线程必须是已经获取了synchronized对象锁(注意这里是对象锁不是类锁也就是说被static标记的方法是不行的)的线程。否则将会抛出java.lang.IllegalMonitorStateException wa ...
分类:
编程语言 时间:
2021-01-26 11:40:49
阅读次数:
0
1 AQS state AQS 的关键 CAS Compare And Swap 修改 state Unsafe 使用 LockSupport 的 park()、unpark() 挂起和唤醒线程 同步队列 sync queue 条件队列 condition queue 等待队列 还有什么阻塞队列,看 ...
分类:
其他好文 时间:
2020-11-04 17:34:20
阅读次数:
14
多线程中的锁 首先讲讲锁的分类 锁的分类 公平锁/非公平锁 可重入锁(递归锁) 独享锁/共享锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁/自适应自旋锁 锁粗化/锁消除 公平锁和非公平锁 线程挂起和线程真正运行之间存在着很长的时间差 公平锁 多个线程按 ...
分类:
编程语言 时间:
2020-07-01 00:26:29
阅读次数:
83
锁 重入锁 读写锁 悲观锁、乐观锁 公平锁、非公平锁 自旋锁 分布式锁 锁 锁是用来控制多个线程访问共享资源的工具。作为并发控制,保证一致性的工具,锁本质上是一个标记。 把这个标记放在关系数据库(RDBMS)中,我们就可以使用数据库的方式实现锁机制。比如设计一张锁表,表中有个字段state,stat ...
分类:
编程语言 时间:
2020-06-30 20:46:05
阅读次数:
65
Javasynchronized关键字详解 前置技能点 进程和线程的概念 线程创立方式 线程的状态状态转换 线程安全的概念 synchronized关键字的几种用法 润饰非静态成员办法 synchronizedpublicvoidsync(){ } 润饰静态成员办法 synchronizedpubl ...
分类:
编程语言 时间:
2020-06-25 17:51:29
阅读次数:
65
带着BAT大厂的面试问题去理解SynchronizedSynchronized可以作用在哪里?分别通过对象锁和类锁进行举例。 Synchronized本质上是通过什么保证线程安全的?分三个方面回答:加锁和释放锁的原理,可重入原理,保证可见性原理。 Synchronized由什么样的缺陷? Java ... ...
分类:
其他好文 时间:
2020-06-12 01:15:46
阅读次数:
90
package club.interview.thread.print; /** * 3个线程从0到100轮流打印。要求输出结果如下 * Thread-0:0 * Thread-1:1 * Thread-2:2 * Thread-0:3 * <p> * 知识点扫盲: * 1. 类锁的wait、not ...
分类:
编程语言 时间:
2020-06-03 20:37:09
阅读次数:
96
1、java中==和equals和hashCode的区别 基本数据类型的比较的值相等.类的比较的内存的地址,即是否是同一个对象,在不覆盖equals的情况下,同比较内存地址,原实现也为 == ,如String等重写了equals方法.hashCode也是Object类的一个方法。返回一个离散的int ...
分类:
编程语言 时间:
2020-05-18 20:57:12
阅读次数:
57
Java synchronized 关键字详解 前置技能点 进程和线程的概念 线程创建方式 线程的状态状态转换 线程安全的概念 synchronized 关键字的几种用法 1. 修饰非静态成员方法 2. 修饰静态成员方法 3. 类锁代码块 4. 对象锁代码块 synchronized 修饰非静态方法 ...
分类:
编程语言 时间:
2020-02-28 01:04:57
阅读次数:
90
1.简介 并发中常用的ReentrantLock,是一种典型的排他锁,这类锁在同一时刻只允许一个线程进行访问,实际上将并行操作变成了串行操作。在并发量大的业务中,其整体效率、吞吐量不能满足实现的需要。而且实际的业务中一般情况是读多于写,多个线程读操作不会改变已经有的数据,不会有数据的一致性问题,而一 ...
分类:
其他好文 时间:
2020-02-15 10:15:42
阅读次数:
84