面试题之synchronized与Lock的区别
一、简介
今天我们总结一下关于JUC方面的面试题:
- synchronized与Lock的区别?
如果面试遇到这个问题,小伙伴们可以参考从以下几个方面进行回答:
区别 |
synchronized |
Lock |
是否关键字 |
synchronized是Java内置关键字 |
Lock类是一个接口 |
是否可尝试获取锁 |
synchronized无法判断是否获取锁的状态 |
Lock可以判断是否获取到锁 |
是否自动释放锁 |
synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁) |
Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁 |
是否一直阻塞 |
用synchronized关键字修饰的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻塞,线程2则会一直等待下去 |
Lock锁就不一定会等待下去,如果尝试获取不到锁,线程可以不用一直等待就结束了 |
是否可重入、中断、公平锁 |
synchronized的锁可重入、不可中断、非公平 |
Lock锁可重入、可中断、可公平(也可非公平) |
使用场合 |
synchronized锁适合代码少量的同步问题 |
Lock锁适合大量同步的代码的同步问题 |
总体来说,Lock锁比synchronized更加灵活,提供了更加丰富的API进行同步操作,也可以结合Condition条件实现比较复杂的线程间同步通信。
面试题之synchronized与Lock的区别相关推荐
- synchronized与Lock的区别与使用
原文链接 https://blog.csdn.net/u012403290/article/details/64910926 ###引言: 昨天在学习别人分享的面试经验时,看到Lock的使用.想起自己 ...
- 题目:三个售票员 卖出 30张票 || 多线程编程的企业级套路+模板||synchronized与Lock的区别
package com.dym.juc;//资源类 class Ticket {private int number =30;public synchronized void saleTicket() ...
- Java多线程之Synchronized和Lock的区别
Java多线程之Synchronized和Lock的区别 目录: 原始构成 使用方法 等待是否可以中断 加锁是否公平 锁绑定多个条件Condition 小结:Lock相比较Synchronized的优 ...
- Java之多线程里面的锁理解以及synchronized与Lock的区别
一.宏观的说下锁的分类 1)锁分为乐观锁.悲观锁 悲观锁认为对于同一个数据的并发操作,一定是会发生修改的,哪怕没有修改,也会认为修改.因此对于同一个数据的并发操作,悲观锁采取加锁的形式.悲观的认为,不 ...
- synchronized与lock的区别总结
前言 在项目开发中经常会用到锁,synchronized与lock是经常在开发中使用到的.在面试中也会问道这两个的使用区别和原理.这里就梳理总结一下. synchronized与lock的区别 1.l ...
- 详解synchronized与Lock的区别与使用
###引言: 昨天在学习别人分享的面试经验时,看到Lock的使用.想起自己在上次面试也遇到了synchronized与Lock的区别与使用.于是,我整理了两者的区别和使用情况,同时,对synchron ...
- Synchronized与Lock的区别与应用场景
同步代码块,同步方法,或者是用java提供的锁机制,我们可以实现对共享资源变量的同步控制. 技术点: 1.线程与进程: 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需 ...
- 【Java】synchronized与lock的区别
从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock. 也许有朋友会问,既然都可以通过synchronized来实现同步访问了 ...
- day 23-24 面试题:synchronized和volatile的区别;final,finally,finalize区别
面试题: 1. synchronized和volatile的区别 2. final,finally,finalize区别 1. synchronized和volatile的区别 1.1 JVM内存模型 ...
- Synchronized 和 Lock 的区别和使用场景
并发编程中,锁是经常需要用到的,今天我们一起来看下Java中的锁机制:synchronized和lock. Synchronized 和 Lock的概念 Synchronized 是Java 并发编程 ...
最新文章
- java开发webservice的几种方式
- 腾讯面试题:创建索引时,你会怎么考虑呢?(看完你就能和面试官谈人生了)
- Webpack中的sourcemap
- 希捷服务器硬盘savvio,2.5英寸进军万转!希捷Savvio硬盘评测
- ubuntu版php开发工具,Ubuntu 中搭建 LAMP 及 php 开发工具
- opengl加载显示3D模型BVH类型文件
- 1.08 亿条投注信息遭泄露,Elasticsearch 是祸因?!
- 基于Spark的电影推荐系统(电影网站)
- 计算机二级C语言冲刺笔记。
- 独立同分布(iid)随机变量的一些趣题
- 微信小程序 上传本地图片
- GSM系统的网络结构
- GPGPU数学基础教程
- 3dmax导出3ds具有过多要导出的面超过64k解决方法
- 阿里云ECS重置实例密码
- 【大话Mysql面试】-常见SQL语句书写
- V4L2图像采集+图片格式转换(YUYV、RGB、JPEG)
- python-opencv创建空白图
- iOS音频篇:AVPlayer的缓存实现
- MySql进阶-间隙锁(gap-key)
热门文章
- icem合并面网格_详解Flunet Meshing:高级网格划分工具中的“扫地僧”
- 自动驾驶 6-1: 横向车辆控制介绍 Lesson 1: Introduction to Lateral Vehicle Control
- 数据集:各地区化妆品销量、人口数量和人均收入
- 农村三资管理平台app_古劳农村“三资”管理规范化、系统化、数字化引来江门日报关注报道...
- 镜像串之字符串常量用处
- linux嵌入式6818,嵌入式ARM实验箱(FS_6818M4)_华清远见研发中心
- python制作的项目进度管理_项目管理必备——使用燃尽图监控项目整体进度
- MapReduce如何使用多路输出
- 【完全背包】自然数拆分Lunatic版
- php5.6 mongo 扩展,docker php5.6镜像创建,包括常用扩展安装