Java 多线程学习笔记(五)synchronized 锁重入
来源:互联网 发布:马赛克视频还原软件 编辑:程序博客网 时间:2024/06/11 01:41
关键字synchronized 拥有锁重入的功能,也就是使用synchronized时,当一个线程得到一个对象锁后,再次请求此对象锁时是可以再次得到该对象的锁的。这也就证明在一个synchronized方法/快的内部调用本类的其他的synchronized方法/快时,是永远可以得到锁的。
package extthread;import myservice.Service;public class MyThread extends Thread {@Overridepublic void run() {Service service = new Service();service.service1();}}
package myservice;public class Service {synchronized public void service1() {System.out.println("service1");service2();}synchronized public void service2() {System.out.println("service2");service3();}synchronized public void service3() {System.out.println("service3");}}
package test;import extthread.MyThread;public class Run {public static void main(String[] args) {MyThread t = new MyThread();t.start();}}可重入锁也支持在父子类继承的环境中。
package extthread;import myservice.Main;import myservice.Sub;public class MyThread extends Thread {@Overridepublic void run() {Sub sub = new Sub();sub.operateISubMethod();}}
package myservice;public class Main {public int i = 10;synchronized public void operateIMainMethod() {try {i--;System.out.println("main print i=" + i);Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
package myservice;public class Sub extends Main {synchronized public void operateISubMethod() {try {while (i > 0) {i--;System.out.println("sub print i=" + i);Thread.sleep(100);this.operateIMainMethod();}} catch (InterruptedException e) {e.printStackTrace();}}}
package test;import extthread.MyThread;public class Run {public static void main(String[] args) {MyThread t = new MyThread();t.start();}}
此实验说明,当存在父子关系时,子类完全可以通过可重入锁调用父类的同步方法。
2 0
- Java 多线程学习笔记(五)synchronized 锁重入
- JAVA学习笔记--多线程(三)synchronized实现线程同步
- Java 多线程学习笔记之synchronized
- Java学习笔记五(多线程)
- java多线程学习笔记(五)
- Java学习笔记(五、多线程)
- java多线程(五)synchronized关键字修饰代码块
- java多线程(五)synchronized关键字修饰代码块
- java多线程学习笔记——synchronized关键字
- Java多线程内存可见性实现 synchronized (java 学习笔记)
- Java synchronized 学习笔记
- java 多线程编程学习Synchronized
- JAVA多线程学习-synchronized辨析
- Java 多线程学习笔记(六)synchronized 不具有继承性
- Java笔记五.多线程
- 疯狂Java学习笔记(68)-----------synchronized
- Java学习笔记(68)-----------synchronized
- 多线程编程学习笔记(五)
- 3、区间重合判断
- MyBatis的其它方法
- Nginx学习历程_3_配置Nginx打开目录浏览功能
- Java 多线程学习笔记(四)yield 介绍
- sql语句学习
- Java 多线程学习笔记(五)synchronized 锁重入
- Javascript FileSystemObject 读取/创建本地文件及目录文件夹的方法
- TCP /IP 协议- 链路层
- 一些优秀博客收集
- Java 多线程学习笔记(六)synchronized 不具有继承性
- Reverse Integer (python)
- php基础阶段内容
- Android目录介绍
- Struts2 action中一个方法返回多个页面