加锁的方式有哪些 ?

简介: 使用synchronized关键字使用Lock锁synchronized和Lock有什么区别 ? 首先synchronized是Java内置关键字,在JVM层面,Lock是个Java类;synchronized 可以给类、方法、代码块加锁;而 lock 只能给代码块加锁。 synchronized 不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁; 而 lock 需要自己加锁和释放锁,如果使用不当没有 unLock()去释放锁就会造成死锁。 通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到。

使用synchronized关键字
使用Lock锁
synchronized和Lock有什么区别 ?
首先synchronized是Java内置关键字,在JVM层面,Lock是个Java类;
synchronized 可以给类、方法、代码块加锁;而 lock 只能给代码块加锁。
synchronized 不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁; 而 lock 需要自己加锁和释放锁,如果使用不当没有 unLock()去释放锁就会造成死锁。
通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到。

目录
打赏
0
0
0
0
44
分享
相关文章
|
11月前
多线程并发锁的方案—原子操作
多线程并发锁的方案—原子操作
|
11月前
多线程并发锁的方案—互斥锁
多线程并发锁的方案—互斥锁
加锁和释放锁的原理
当方法执行完后或者抛出异常后,都会释放锁
97 0
加锁有什么缺点?
加锁有什么缺点?
97 0
并发锁(一):为什么要加锁
并发锁(一):为什么要加锁
178 0
并发锁(一):为什么要加锁
Java多线程(二)、线程的生命周期、线程的同步、Synchronized的使用方法、同步代码块、同步方法、同步机制中的锁、同步的范围、Lock(锁、不会释放锁的操作、单例设计模式之懒汉式(线程安全)
Java多线程(二)、线程的生命周期、线程的同步、Synchronized的使用方法、同步代码块、同步方法、同步机制中的锁、同步的范围、Lock(锁、不会释放锁的操作、单例设计模式之懒汉式(线程安全)
Java多线程(二)、线程的生命周期、线程的同步、Synchronized的使用方法、同步代码块、同步方法、同步机制中的锁、同步的范围、Lock(锁、不会释放锁的操作、单例设计模式之懒汉式(线程安全)
如何在不加锁的情况下解决线程安全问题
如何在不加锁的情况下解决线程安全问题
如何在不加锁的情况下解决线程安全问题
【学习笔记】线程原子性-锁 synchronized的用法(2)
【学习笔记】线程原子性-锁 synchronized的用法
134 0
【学习笔记】线程原子性-锁 synchronized的用法(2)