首先我们需要知道的是:锁可以分为公平锁和不公平锁,重入锁和非重入锁; 一、Lock接口 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制。本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\locks中), Lock有三个实现类,一个 ...
分类:
其他好文 时间:
2019-06-19 23:17:02
阅读次数:
156
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。 1.重入锁 重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的 ...
分类:
编程语言 时间:
2019-05-04 00:25:44
阅读次数:
176
一、Java基础 集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;ConcurrentHashMap 进程和线程的区别;多线程与线程池 数据一致性如何保证;Synchronized关键字,类锁,方法锁,重入锁 同步的方法;多进程开发以及多进程应用场 ...
分类:
其他好文 时间:
2019-03-12 12:31:41
阅读次数:
172
重入锁 重入锁指的是当前线成功获取锁后,如果再次访问该临界区,则不会对自己产生互斥行为。 Java中对ReentrantLock和synchronized都是可重入锁,synchronized由jvm实现可重入即使,ReentrantLock都可重入性基于AQS实现。 ReentrantLock还提 ...
分类:
其他好文 时间:
2019-02-01 12:22:20
阅读次数:
210
多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式;jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池; 锁(分为内部锁、重入锁、读写锁)、ThreadLocal ...
分类:
编程语言 时间:
2019-01-15 14:00:41
阅读次数:
223
重入锁,指同一个线程试图获取一个已经由它自己持有的锁的一种“现象”。 譬如有一个类: 假设现在创建两个线程,ThreadA和ThreadB,同时调用TestDemo对象里面的方法, 当ThreadA率先获得testDemo对象锁,进入doSomething1()方法,ThreadB想要执行doSom ...
分类:
其他好文 时间:
2018-12-05 14:26:54
阅读次数:
137
并发编程-synchronized 细节说明 1. synchronized-锁重入 & 异常释放锁 说明 * 关键字synchronized 拥有锁重入的功能,也就是在使用synchronized时,当一个线程得到一个对象的锁后,再次请求此对象时可以再次得到该对象的锁; 2. synchroniz ...
分类:
其他好文 时间:
2018-11-20 15:15:25
阅读次数:
180
重入锁基本使用: 使用java.util.concurrent.locks.ReentrantLock 类来实现,可以替代synchronized关键字。如下例,重入锁有着显示的操作过程,开发者可以手动指定在哪里加锁,在哪里释放(退出临界区时必须释放,不然其他线程没有机会再访问了)。重入的意思是,同 ...
分类:
其他好文 时间:
2018-11-03 23:06:56
阅读次数:
168
问题导入:如果一个线程调用了一个对象的同步方法,那么他还能不能在调用这个对象的另外一个同步方法呢? 这里就是synchronized锁重入问题。 一.synchronized锁重入 来看下面的代码: .这个是三个同步方法的类 线程类,在run方法中调用一号同步方法: 结果如下: 总结:可以看出一个线 ...
分类:
编程语言 时间:
2018-10-17 12:13:53
阅读次数:
223
一、前言 今天在做一些高并发的简单测试时(主要测试悲观锁、乐观锁、重入机制等等的效率,加深对锁的理解),报了一个莫名其妙的空指针错误: 错误原因指向一个业务实现类,于是赶忙打开该类查看第62行代码: 观察到,第62行只是一个简单的判断语句: 该判断句所引对象来自61行代码: 思考后发现,如果是空指针 ...
分类:
其他好文 时间:
2018-09-09 12:00:53
阅读次数:
226