校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > synchronized、volatile(后续会删除)
题目

同步方法和同步代码块的区别是什么?

解答

区别:
同步方法默认用this或者当前类class对象作为锁;
同步代码块可以选择以什么来加锁,比同步方法要更细颗粒度,我们可以选择只同步会发生同步问题的部分代码而不是整个方法;
同步方法使用关键字 synchronized修饰方法,而同步代码块主要是修饰需要进行同步的代码,用 synchronized(object){代码内容}进行修饰;

C 5条回复 评论
卡卡卡

看这个冲刺面试

发表于 2021-12-23 21:00:00
0 0
奕杉

我在长沙,想学ui,有没有推荐的培训机构

发表于 2021-09-09 11:20:00
0 0
两小壳子

区别:
同步方法默认用this或者当前类class对象作为锁;
同步代码块可以选择以什么来加锁,比同步方法要更细颗粒度,我们可以选择只同步会发生同步问题的部分代码而不是整个方法;
同步方法使用关键字 synchronized修饰方法,而同步代码块主要是修饰需要进行同步的代码,用 synchronized(object){代码内容}进行修饰;

发表于 2021-05-07 14:19:38
0 0
西窗

同步代码块使用的锁是任意对象Object。 同步函数使用的锁是this。 使用静态修饰的同步函数使用的是该类所在的字节码文件对象,格式为类名.class。

发表于 2020-06-22 16:40:36
0 0
墨色槐

同步方法锁的是当前对象,当一个线程使用该对象的同步方法时,会获得该对象的锁,其他线程不能访问该对象的同步方法(只有获得该对象的锁才可以访问同步方法,但可以访问该对象的非同步方法)
如果并发量大的话,效率很低,因为如果要访问没有冲突的方法时本来不会和之前的操作产生冲突,但因为没有该对象的锁,所以要等待获得该对象的锁,白白地浪费时间
而同步代码块可以选择要同步的代码块,粒度更小,可以避免上面出现的问题

发表于 2020-06-22 16:40:10
0 0