synchronized锁重入

太过爱你忘了你带给我的痛 2022-05-24 03:55 279阅读 0赞

渔灯暗,客梦回,一声声滴人心碎
“可重入锁”的意思是,自己可以再次获取自己的内部锁,如果线程A获得了某个对象的锁,这个锁还没有被释放,当想再次获得锁的时候还是可以获得的.也就是说,在一个同步代码方法/块里还是可以获取本类的其他同步方法/块.
示例代码:

  1. public class ThreadTest {
  2. public static void main(String[] args) {
  3. try{
  4. MyThread thread = new MyThread();
  5. thread.start();
  6. }catch (Exception e) {
  7. e.printStackTrace();
  8. }
  9. }
  10. }
  11. class MyThread extends Thread{
  12. @Override
  13. public void run() {
  14. super.run();
  15. A a = new A();
  16. a.method1();
  17. }
  18. }
  19. class A {
  20. synchronized public void method1() {
  21. System.out.println("method1");
  22. method2();
  23. }
  24. synchronized public void method2() {
  25. System.out.println("method2");
  26. method3();
  27. }
  28. synchronized public void method3() {
  29. System.out.println("method3");
  30. }
  31. }

这里的方法1,2,3都是同步,在1里面调用方法2,方法2里调用方法3.输出结果:

这里写图片描述
由此可以得出:
在同一个类中,同步的方法是可以调用其他同步方法的.而且父子类中这样也可以,即父子类中也存在可重入锁;

发表评论

表情:
评论列表 (有 0 条评论,279人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Synchronize

    Synchronize锁重入 拥有锁重入的功能 就是在使用synchronize时,当一个线程得到了一个对象的锁之后 再次,请求该对象时,可以再次得到该对象的锁