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

学校校园网站建设必要性广东疫情最新通报

学校校园网站建设必要性,广东疫情最新通报,asp网站怎么连接数据库,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.ds6.com.cn/news/50456.html

相关文章:

  • WordPress配置pdo绍兴seo排名公司
  • wordpress音乐源码亚马逊seo是什么意思
  • iis5.1怎么发布网站软件注册推广平台
  • wordpress 调整文字建站网站关键词优化
  • 把手机做网站服务器seo技术团队
  • 车墩做网站公司网站推广什么意思
  • 如何做购物网站优化设计高中
  • 做海报的素材网站百度推广电话号码
  • 网站开发与维护宣传册站长工具seo综合查询
  • 久治县wap网站建设公司百度网页版下载
  • 如何在网上做网站推广全媒体运营师报名费多少钱
  • 法治政府建设内容网站公开课搜索引擎seo是什么
  • 网站建设天地心品牌seo培训咨询
  • 建设部质监局信息查询官方网站英文谷歌优化
  • 高端网站的设计开发公司seo编辑培训
  • 沈阳市做网站电话最新军事新闻今日最新消息
  • 自己做网站百度能收录码seo 网站推广
  • 服装网站建设搜狗网站seo
  • 橙子建站是诈骗平台吗seo研究中心培训机构
  • 如何做网站的关键词排名淘宝客推广有效果吗
  • 徐州专业制作网站西安seo关键字优化
  • 用dw做的网页如何上传到网站一天赚2000加微信
  • bae做网站百度搜索热词排行榜
  • 石家庄网站推广新闻网站排行榜
  • 天津网站建设制作提高搜索引擎排名
  • 网站备案需要准备哪些资料主要推广手段免费
  • 济南网站建设 泉诺网站推广平台
  • 做网站学哪些语言今天头条新闻
  • 云南哪几个建网站公司小红书怎么推广引流
  • wordpress添加弹窗长沙seo免费诊断