一、简介

今天我们总结一下关于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的区别相关推荐

  1. synchronized与Lock的区别与使用

    原文链接 https://blog.csdn.net/u012403290/article/details/64910926 ###引言: 昨天在学习别人分享的面试经验时,看到Lock的使用.想起自己 ...

  2. 题目:三个售票员 卖出 30张票 || 多线程编程的企业级套路+模板||synchronized与Lock的区别

    package com.dym.juc;//资源类 class Ticket {private int number =30;public synchronized void saleTicket() ...

  3. Java多线程之Synchronized和Lock的区别

    Java多线程之Synchronized和Lock的区别 目录: 原始构成 使用方法 等待是否可以中断 加锁是否公平 锁绑定多个条件Condition 小结:Lock相比较Synchronized的优 ...

  4. Java之多线程里面的锁理解以及synchronized与Lock的区别

    一.宏观的说下锁的分类 1)锁分为乐观锁.悲观锁 悲观锁认为对于同一个数据的并发操作,一定是会发生修改的,哪怕没有修改,也会认为修改.因此对于同一个数据的并发操作,悲观锁采取加锁的形式.悲观的认为,不 ...

  5. synchronized与lock的区别总结

    前言 在项目开发中经常会用到锁,synchronized与lock是经常在开发中使用到的.在面试中也会问道这两个的使用区别和原理.这里就梳理总结一下. synchronized与lock的区别 1.l ...

  6. 详解synchronized与Lock的区别与使用

    ###引言: 昨天在学习别人分享的面试经验时,看到Lock的使用.想起自己在上次面试也遇到了synchronized与Lock的区别与使用.于是,我整理了两者的区别和使用情况,同时,对synchron ...

  7. Synchronized与Lock的区别与应用场景

    同步代码块,同步方法,或者是用java提供的锁机制,我们可以实现对共享资源变量的同步控制. 技术点: 1.线程与进程: 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需 ...

  8. 【Java】synchronized与lock的区别

    从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock. 也许有朋友会问,既然都可以通过synchronized来实现同步访问了 ...

  9. day 23-24 面试题:synchronized和volatile的区别;final,finally,finalize区别

    面试题: 1. synchronized和volatile的区别 2. final,finally,finalize区别 1. synchronized和volatile的区别 1.1 JVM内存模型 ...

  10. Synchronized 和 Lock 的区别和使用场景

    并发编程中,锁是经常需要用到的,今天我们一起来看下Java中的锁机制:synchronized和lock. Synchronized 和 Lock的概念 Synchronized 是Java 并发编程 ...

最新文章

  1. java开发webservice的几种方式
  2. 腾讯面试题:创建索引时,你会怎么考虑呢?(看完你就能和面试官谈人生了)
  3. Webpack中的sourcemap
  4. 希捷服务器硬盘savvio,2.5英寸进军万转!希捷Savvio硬盘评测
  5. ubuntu版php开发工具,Ubuntu 中搭建 LAMP 及 php 开发工具
  6. opengl加载显示3D模型BVH类型文件
  7. 1.08 亿条投注信息遭泄露,Elasticsearch 是祸因?!
  8. 基于Spark的电影推荐系统(电影网站)
  9. 计算机二级C语言冲刺笔记。
  10. 独立同分布(iid)随机变量的一些趣题
  11. 微信小程序 上传本地图片
  12. GSM系统的网络结构
  13. GPGPU数学基础教程
  14. 3dmax导出3ds具有过多要导出的面超过64k解决方法
  15. 阿里云ECS重置实例密码
  16. 【大话Mysql面试】-常见SQL语句书写
  17. V4L2图像采集+图片格式转换(YUYV、RGB、JPEG)
  18. python-opencv创建空白图
  19. iOS音频篇:AVPlayer的缓存实现
  20. MySql进阶-间隙锁(gap-key)

热门文章

  1. icem合并面网格_详解Flunet Meshing:高级网格划分工具中的“扫地僧”
  2. 自动驾驶 6-1: 横向车辆控制介绍 Lesson 1: Introduction to Lateral Vehicle Control
  3. 数据集:各地区化妆品销量、人口数量和人均收入
  4. 农村三资管理平台app_古劳农村“三资”管理规范化、系统化、数字化引来江门日报关注报道...
  5. 镜像串之字符串常量用处
  6. linux嵌入式6818,嵌入式ARM实验箱(FS_6818M4)_华清远见研发中心
  7. python制作的项目进度管理_项目管理必备——使用燃尽图监控项目整体进度
  8. MapReduce如何使用多路输出
  9. 【完全背包】自然数拆分Lunatic版
  10. php5.6 mongo 扩展,docker php5.6镜像创建,包括常用扩展安装