java堆和栈的区别 java synchronized锁对象,当对象引用是null的时候,锁的是什么?
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方法区和永久代
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。