当前位置: 首页 > news >正文

图书大厦网站建设报告定制型和模板型网站

图书大厦网站建设报告,定制型和模板型网站,长沙代理记账,wordpress模板之家文章目录synchronized锁重入验证1. 可重入锁2. synchronized锁重入2.1 本类同步方法内部调用本类其它同步方法2.2 子类同步方法内部调用父类的同步方法2.3 A类的同步方法内部调用B类的同步方法3. synchronized修饰方法写法synchronized锁重入验证 1. 可重入锁 可重入锁&#…

文章目录

  • synchronized锁重入验证
  • 1. 可重入锁
  • 2. synchronized锁重入
    • 2.1 本类同步方法内部调用本类其它同步方法
    • 2.2 子类同步方法内部调用父类的同步方法
    • 2.3 A类的同步方法内部调用B类的同步方法
  • 3. synchronized修饰方法写法

synchronized锁重入验证

1. 可重入锁

可重入锁:也叫递归锁,指的是同一线程的外层函数获得锁之后,内层递归函数仍然能获取该锁的代码。

即同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。线程可以进入任何一个它已经拥有的锁所同步着的代码块。

2. synchronized锁重入

synchronized是支持锁重入的,是可重入锁。

  • 同一线程在本类同步方法内部可以调用本类其它同步方法
  • 同一线程子类同步方法内部可以调用父类的同步方法
  • 同一线程在A类的同步方法内部可以调用B类的同步方法

2.1 本类同步方法内部调用本类其它同步方法

同一线程在本类同步方法内部可以调用本类其它同步方法

SyncObjMthod类:

public class SyncObjMthod {synchronized public void method1(){System.out.println("线程 "+Thread.currentThread().getName()+"\t调用 method1...");method2();}synchronized public void method2(){System.out.println("线程 "+Thread.currentThread().getName()+"\t调用 method2...");method3();}synchronized public void method3(){System.out.println("线程 "+Thread.currentThread().getName()+"\t调用 method3...");}
}

TestSyncRenntry测试类:

public class TestSyncRenntry {public static void main(String[] args) {new Thread(() -> {SyncObjMthod syncObjMthod = new SyncObjMthod();syncObjMthod.method1();}, "AAA").start();;}
}

输出结果:

线程 AAA	调用 method1...
线程 AAA	调用 method2...
线程 AAA	调用 method3...

2.2 子类同步方法内部调用父类的同步方法

同一线程子类同步方法内部可以调用父类的同步方法

父类Father:

public class Father {public int i =10;public synchronized void fatherMethod(){try {i--;System.out.println("线程 "+Thread.currentThread().getName()+"\t调用 fatherMethod i="+i);TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {e.printStackTrace();}}
}

子类Sub:

public class Sub extends Father {public synchronized void subMethod() {try {while (i > 0) {i--;System.out.println("线程 "+Thread.currentThread().getName()+"\t调用 subMethod i=" + i);TimeUnit.SECONDS.sleep(5);this.fatherMethod();}} catch (InterruptedException e) {e.printStackTrace();}}
}

测试类TestSyncRenntry1:

public class TestSyncRenntry1 {public static void main(String[] args) {new Thread(()->{Sub sub = new Sub();sub.subMethod();},"BBB").start();}
}

输出结果:

线程 BBB	调用 subMethod i=9
线程 BBB	调用 fatherMethod i=8
线程 BBB	调用 subMethod i=7
线程 BBB	调用 fatherMethod i=6
线程 BBB	调用 subMethod i=5
线程 BBB	调用 fatherMethod i=4
线程 BBB	调用 subMethod i=3
线程 BBB	调用 fatherMethod i=2
线程 BBB	调用 subMethod i=1
线程 BBB	调用 fatherMethod i=0

2.3 A类的同步方法内部调用B类的同步方法

同一线程在A类的同步方法内部可以调用B类的同步方法

public class A {B b = new B();public synchronized void method(){System.out.println("线程 "+Thread.currentThread().getName()+"\t调用 A类 method方法");b.method();}
}
public class B {public synchronized void method(){System.out.println("线程 "+Thread.currentThread().getName()+"\t调用 B类 method方法");}
}
public class TestDemo1 {public static void main(String[] args) {new Thread(()->{A a = new A();a.method();},"CCC").start();}
}
线程 CCC	调用 A类 method方法
线程 CCC	调用 B类 method方法

3. synchronized修饰方法写法

synchronized修饰方法的写法:

  1. 第一种
synchronized public void method1(){}
  1. 第二种
public synchronized void method1(){}
http://www.yayakq.cn/news/186497/

相关文章:

  • 网站业务怎么做大连嘉良建设有限公司网站
  • 男生做污污事的视频网站建筑学是十大最烂专业之一吗
  • 网站建设技术主管wordpress5.0官网
  • 深圳企业网站建设制作长宁做网站公司
  • 济宁做网站的怎么给网站做绿标
  • 网站建设流程资讯网站建设中的页数
  • 常用知名购物网站学做快餐在哪个网站
  • wordpress站群目录收录大专有动漫设计专业吗
  • 北京律师24小时电话网站框架优化
  • 模版网站和语言网站北京宣传片制作公司
  • 一站式平台网站开发技术成都网站建设网
  • 公司网站设计 优帮云建设信息港查询
  • 包头移动官网网站建设网站建设期间工作
  • iis网站管理助手国美网站建设的特点
  • 建设银行网站上不去了百度 seo排名查询
  • cc网站域名注册外贸圈是什么
  • 阜阳建设工程质量监督网站学做衣服网站
  • 网站设计要求网站中弹出广告怎么做
  • 男女激烈做羞羞事网站网站韩剧wordpress mip 改造
  • 什么做的网站互联网上市公司排名
  • 南山医院网站建设肇庆网络推广
  • 产品众筹网站开发淘宝优惠劵网站怎么做
  • 咸宁网站建设哪家专业wordpress生成速度显示代码
  • 塑钢模板价格一平方整站seo技术搜索引擎优化
  • 做企业网站怎样做wordpress 4.4漏洞
  • 专门网站建设吉安信息网
  • 网站建设网页设计服务建一个产品介绍网站
  • 苏州网站建设工作室电商网站建设功能需求
  • 网站后台怎么挂广告 怎么做asp做的网站如何发布
  • 手机网站策划wordpress删除plugins