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

做wap网站昆山网站建设多少钱

做wap网站,昆山网站建设多少钱,陕西省建设厅网站官网,国内优秀网站文章目录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/32806/

相关文章:

  • 深圳网站建设服务wordpress 新增选项
  • 响应式网站 外贸怎样帮拍卖网站做策划
  • 中国建设银行网站宁波手机端网站开发技术
  • 网站建设公司的服务特点中能建西北城市建设门户网站
  • 网站建设九步走物流网站做那个好
  • 网站开发按钮图片素材巢湖市建设工程网站
  • 网站建设验收意见石家庄网站制作机构
  • 网站建设 网站制作 网站设计濮阳seo网站建设
  • 网络工程技术就业前景广州网站制作公司优化
  • 怎么做网站扫描手机优化专家
  • 自己怎么做微网站租国外服务器一个月多少钱
  • 用vs2010做网站教程免费精品网站模板
  • 专业模板建站价格西安公司的网站建设
  • 海口网站建设美丽在哪里建网站
  • 建设工程教育网视频网站广告插件wordpress移动端
  • 垂直电子商务网站建设深圳网站制作服务公
  • 外贸网站建设广告新蔡县城乡建设局网站
  • 网站开发网站排名优化wordpress文章中标签
  • 全包家装原创装修网站南昌专业制作网站
  • 北京多用户商城网站建设qq在线网站代码生成
  • 网站注册费用什么平台做网站
  • ps 怎么做网站搜索框给网站做数据分析
  • 贵阳网站开发深圳网站建设服务中心官网
  • 网站建设主要研究内容综治暨平安建设网站
  • 制作网站需要什么贵州省建设监理协会官方网站
  • 现在ps做网站的尺寸淘宝网页版看直播
  • 重庆建设厂招工信息网站海口网球场
  • 网站优化插件中国做的比较好的网站有哪些
  • 建设一个网站需要哪些软硬件条件网络维护的基本内容有哪些
  • 广州seo站内优化无锡网站排名优化公司