Synchronized与Lock有何本质差异?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4376个文字,预计阅读时间需要18分钟。
Synchronized是Java内置的关键字,Lock是一个Java类。Synchronized无法判断是否获取到锁,Lock可以判断是否获取到锁。Synchronized会自动释放锁,Lock必须手动释放锁。
如下所示:
Synchronized是内置的java关键字,Lock是一个java类。
Synchronized无法判断是否获取到了锁,Lock可以判断是否获取到了锁。
Synchronized会自动释放锁,Lock必须手动释放锁。
Synchronized线程1获得锁之后阻塞,等待锁的线程2会一直等下去(死等)。Lock不一定会死等。
Synchronized可重入锁、不可中断、非公平锁。Lock是可重入锁、选择是否可中断、可以选择是否公平。
Synchronized适合锁少量的代码同步问题。Lock适合锁大量的同步代码。
补充知识:java synchronized关键字的用法以及锁的等级:方法锁、对象锁、类锁
首先说明一下:方法锁和对象锁说的是一个东西,即只有方法锁或对象锁 和类锁两种锁
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。
因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。
java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法。
本文共计4376个文字,预计阅读时间需要18分钟。
Synchronized是Java内置的关键字,Lock是一个Java类。Synchronized无法判断是否获取到锁,Lock可以判断是否获取到锁。Synchronized会自动释放锁,Lock必须手动释放锁。
如下所示:
Synchronized是内置的java关键字,Lock是一个java类。
Synchronized无法判断是否获取到了锁,Lock可以判断是否获取到了锁。
Synchronized会自动释放锁,Lock必须手动释放锁。
Synchronized线程1获得锁之后阻塞,等待锁的线程2会一直等下去(死等)。Lock不一定会死等。
Synchronized可重入锁、不可中断、非公平锁。Lock是可重入锁、选择是否可中断、可以选择是否公平。
Synchronized适合锁少量的代码同步问题。Lock适合锁大量的同步代码。
补充知识:java synchronized关键字的用法以及锁的等级:方法锁、对象锁、类锁
首先说明一下:方法锁和对象锁说的是一个东西,即只有方法锁或对象锁 和类锁两种锁
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。
因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。
java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法。

