原本打算写设计模式的,在周六日用了两天的时间所有看了一遍,可是写了一篇以后,发现,写的没有网上的好,感受你们可能看不懂,因此打算继续写并发编程html
设计模式,就给你们推荐一下菜鸟教程的吧,我看了一下,将的比较统一,都很不错java
连接:https://www.runoob.com/design-pattern/design-pattern-tutorial.html编程
显示锁是jdk1.5以后提供的一种锁设计模式
Lock提供了一种无条件的、可轮询的、定时的以及可中断的锁获取操做,全部加锁和解锁的方法都是显示的。网络
lock:加锁并发
lockInterruptibly:中断锁spa
tryLock:尝试获取锁,附带超时重载线程
unlock:释放锁设计
newCondition:获取一个Condition,Condition是一个用于线程之间通讯的一个类code
package org.dance.day4; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * lockDemo * @author ZYGisComputer */ public class LockDemo { private Lock lock = new ReentrantLock(); private int count; /** * 累加操做 */ public void increment(){ // 加锁 lock.lock(); try { count++; }finally { // 释放锁 lock.unlock(); } } public synchronized void incrementSync(){ count++; // 可重入锁演示 incrementSync(); } }
1:获取锁
2:写try finally
3:在finally中释放锁
总结:获取锁完毕后,必定要在以后的代码中,添加try finally并在finally块中释放锁,由于防止代码中抛出异常报错,致使锁没法释放
Lock Sync
使用方式 复杂 简单
获取锁是否能够被中断 能够 不能够
获取锁是否能够超时 能够 不能够
是否能够尝试获取锁 能够 不能够
是否可重入 能够 能够
是否能够读写分离 能够 不能够
是不是阻塞的 不是 是
什么是可重入锁?可重入锁就是支持一个线程对这个锁进行屡次获取加锁,通常只有在递归一个加锁的方法的时候或者调用多个加锁的方法才会用到可重入锁,可重入锁获取了几回,就要释放几回,而Java的Synchronized和Lock接口都是提供锁的可重入的.
通常来讲,若是不是,业务特殊要求锁,须要能够中断,或者获取超时,或者尝试获取,读写分离的,推荐直接使用Synchronized
做者:彼岸舞
时间:2020\11\02
内容关于:并发编程
本文来源于网络,只作技术分享,一律不负任何责任