浙江综合网站建设配件创建官方网站
浙江综合网站建设配件,创建官方网站,淄博做网站多少钱,开发一个网站需要多少人1 synchronized可重入性的理解
当一个线程试图操作一个由其他线程持有的对象锁的临界资源时#xff0c;将会处于阻塞状态#xff0c;但当一个线程再次请求自己持有对象锁的临界资源时#xff0c;如果当前锁是重入性#xff0c;会请求将会成功#xff0c;如果当前锁不是可…1 synchronized可重入性的理解
当一个线程试图操作一个由其他线程持有的对象锁的临界资源时将会处于阻塞状态但当一个线程再次请求自己持有对象锁的临界资源时如果当前锁是重入性会请求将会成功如果当前锁不是可重入性会等待当前对象锁的释放实际上该对象锁已被当前线程所持有不可能再次获得就会产生死锁在java中synchronized是基于原子性的内部锁机制是可重入的因此在一个线程调用synchronized方法的同时在其方法体内部调用该对象另一个synchronized方法也就是说一个线程得到一个对象锁后再次请求该对象锁是允许的还有就是当子类继承父类时子类也是可以通过可重入锁调用父类的同步方法这就是synchronized的可重入性。 2 测试synchronized方法调用synchronized方法
1代码
import java.io.*;class Parent {public synchronized void willDo() {System.out.println(我是父类的方法);}
}class Child extends Parent {Overridepublic synchronized void willDo() {super.willDo();System.out.println(我是子类方法);}public static void main(String[] args) {Child child new Child();child.willDo();}
} 2运行结果
我是父类的方法
我是子类方法 3 测试子类synchronized方法调用父类synchronized方法
1代码
class Test implements Runnable {static Test instance new Test();static int i0;static int j0;Overridepublic void run() {for(int j 0; j 10; j) {//当前实例对象锁synchronized(this){i;willDo();}}}public synchronized void willDo() {j;}public static void main (String[] args) throws java.lang.Exception {Thread t1 new Thread(instance);t1.start();t1.join();System.out.println(i);}
} 2运行结果
10
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89908.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!