栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

synchronized 方法锁 对象锁 类锁

Java 更新时间:发布时间: 百科书网 趣学号

synchronized 方法锁 对象锁 类锁
  • 方法锁
  • 对象锁
  • 类锁

方法锁

synchronized修饰方法时
每个类的实例类的实例对应一把锁(方法锁也是对象锁)
执行synchronized修饰的方法必须拥有实例对象的锁
方法一旦执行,就会独占该锁,方法执行完毕,会释放该锁
其他没获得锁的线程处于阻塞状态




不加synchronized:

对象锁

synchronized修饰对象或代码块
java的每个对象都有一个互斥锁,线程运行synchronized修饰的方法或代码块时都要获得这个对象的锁
没有获得锁的线程会阻塞等待

1.对方法加锁:

2.对代码块加锁:

类锁

synchronized修饰静态方法或代码块
类锁只是抽象出来的概念,是为了区分实例方法和静态方法
静态方法是所有实例对象所共有的,所以类锁是所有对象共有的,每个类只有一把类锁
类锁和对象锁是两个不一样的锁,它们互不干扰,线程获得对象锁的同时,也可以获得了类锁。

1.静态方法加锁

2.代码块加锁

获取字节码的三种方式:
1.类的全路径
Class.forName(“com.dyit.SynchronizedDemo”);
2.类名.class方式获取字节码
SynchronizedDemo.class;
3.通过对象获取
SynchronizedDemo demo=new SynchronizedDemo();
Class class1=demo.getClass();


转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/273186.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号