synchronized 几种使用方式
同步方法
由于Java的每个对象都有一个内置锁,当 synchronized 关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态
public class Test{
/**
* 这种方式是 对象锁。普通实例方法默认同步监视器就是this,即调用该方法的对象
*/
public synchronized void methodA(){
}
/**
* 这中方式是 类锁。synchronized加锁的对象为当前静态方法所在类的Class对象
*/
public synchronized static void methodB(){
}
}
同步代码块
public class Test{
/**
* 这种方式是 类锁
*/
public void methodC(){
synchronized(Test.class){
}
}
/**
* 这种方式是 对象锁。this表示是对象锁
*/
public void methodD(){
synchronized(this){
}
}
/**
* JVM全局常量锁。需要考虑在其它方法中互斥问题
*/
public void methodE(String param){
synchronized(param.intern()){
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了