2016 - 2024

感恩一路有你

java堆和栈的区别 java synchronized锁对象,当对象引用是null的时候,锁的是什么?

浏览量:2634 时间:2021-04-09 14:35:52 作者:admin

java synchronized锁对象,当对象引用是null的时候,锁的是什么?

谢邀!

Java语言规范中明确指出如果锁住的对象是null,则会NullPointerException,规范内容如下:

The type of Expression must be a reference type, or a compile-time error occurs. A synchronized statement is executed by first evaluating the Expression. Then: If evaluation of the Expression completes abruptly for some reason, then the synchronized statement completes abruptly for the same reason. Otherwise, if the value of the Expression is null, a NullPointerException is thrown.

Java中非static的synchronized方法和synchronized(this)用的是一个锁吗?

Java中非static的synchronized方法和synchronized(this)用的是一把锁,这也说明非静态方法中的synchronized(this)和synchronized关键字

是Java支持中同一把锁。

在Java中,synchronized是用来表示同步的,既可以用synchronized来修饰一个方法,也可以修饰方法里的语句块。


在static方法和非static方法前面加synchronized的区别在于

static的方法属于类方法,它属于Class类范畴,所以static获取到的锁,是属于类的锁。

非static方法获取到的锁,是属于当前对象的锁。


再回到问题它们是一把锁,synchronized是针对一个临界区的,临界区指访问这个地方最多只能在一个线程里面,

它在对象上加锁后进入临界区以此来达到临界区串行访问的目的。


希望可以帮到你!!!

java堆和栈的区别 java堆栈方法区图解 jvm方法区和永久代

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。