📄 staticlockandobjlock.java
字号:
package thread.lock;
/**
* <p>Title: </p>
*
* <p>Description:类锁和实例锁混合使用 </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: netsky</p>
*
* @author wdz123@hotmail.com
* @version 1.0
*/
public class StaticLockAndObjLock {
/**
*类锁
* **/
private static Object staticLock=new Object();
/**
* 实例锁
* **/
private Object objLock= new Object();
public StaticLockAndObjLock() {
}
/***
* 实例方法中混合使用类锁和实例锁。
* ***/
public void objMethrodA(){
///获取实例锁
synchronized(objLock){
///处理一堆事情
//....
//获取类锁
synchronized(staticLock){
//处理一堆事情
///....比如,并发修改类属性
}
}
}
/***
* 类方法中混合使用类锁和实例锁
* **/
public static void staticMethrodA(){
//获取类锁
synchronized(staticLock){
//处理一堆事情
///....比如,并发修改类属性
//为了使用实例锁,先得生成一个实例
StaticLockAndObjLock o =new StaticLockAndObjLock();
///获取实例锁
synchronized(o.objLock){
///处理一堆事情
//....
}
}
}
public static void main(String[] args) {
StaticLockAndObjLock staticlockandobjlock = new StaticLockAndObjLock();
staticlockandobjlock.objMethrodA();
StaticLockAndObjLock.staticMethrodA();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -