Lombok注解详解:@Synchronized与@Locked的使用方法
创作时间:
作者:
@小白创作中心
Lombok注解详解:@Synchronized与@Locked的使用方法
引用
CSDN
1.
https://blog.csdn.net/tanglei6636/article/details/142535176
Lombok是一个用于Java的代码生成库,它通过注解来减少样板代码的编写。本文将介绍Lombok中的两个注解:@Synchronized和@Locked,它们分别用于实现同步锁和可重入锁。
@Synchronized
通过锁代码块的方式实现同步锁。
当synchronized修饰类属性时,通常用于定义同步代码块,此时需要指定一个锁对象。这个锁对象通常是类的某个私有静态成员变量,因为类属性是静态的,所以锁也应该是静态的,以确保所有访问该属性的线程都使用同一个锁。
如何使用
- 注解到需要保证线程安全的方法上。
代码示例
这里直接使用了Lombok官网的例子:
public class SynchronizedExample {
private final Object readLock = new Object();
@Synchronized
public static void hello() {
System.out.println("world");
}
@Synchronized
public int answerToLife() {
return 42;
}
@Synchronized("readLock")
public void foo() {
System.out.println("bar");
}
}
编译后:为需要保证线程安全的代码生成了同步代码块的锁
@Locked
用于实现ReentrantLock(可重入锁)。
ReentrantLock也是Java当中提供的一种锁,这种锁和synchronized类似也可以起到互斥使用,它允许同一个线程在持有锁的情况下再次获取该锁(可重入性),保证线程安全。(ReentrantLock用起来非常简单,不了解的可以查一下ReentrantLock,,不仅方便的提供加锁、解锁方法,还提供了公平跟非公平的两种实现,本文主要介绍Lombok注解,因此不做赘述。)
如何使用
- 注解到需要使用ReentrantLock的方法上。
- 提供读、写、自定义三种级别。
代码示例
这里直接使用了Lombok官网的例子:
public class LockedExample {
private int value = 0;
private final Lock baseLock = new ReentrantLock();
@Locked.Read
public int getValue() {
return value;
}
@Locked.Write
public void setValue(int newValue) {
value = newValue;
}
@Locked("baseLock")
public void foo() {
System.out.println("bar");
}
}
编译后:生成了加锁、解锁、定义自定义锁的代码。
public class LockedExample {
@Generated
private final ReadWriteLock $lock = new ReentrantReadWriteLock();
private int value = 0;
private final Lock baseLock = new ReentrantLock();
public LockedExample() {
}
public int getValue() {
this.$lock.readLock().lock();
int var1;
try {
var1 = this.value;
} finally {
this.$lock.readLock().unlock();
}
return var1;
}
public void setValue(int newValue) {
this.$lock.writeLock().lock();
try {
this.value = newValue;
} finally {
this.$lock.writeLock().unlock();
}
}
public void foo() {
this.baseLock.lock();
try {
System.out.println("bar");
} finally {
this.baseLock.unlock();
}
}
}
热门推荐
煎蛋烹饪攻略:从基本技巧到创意搭配,轻松做出餐厅级美味
世界献血者日:400毫升献血量真的伤身吗?
眉弓骨高挑,你就是职场女王?
九寨沟的守护者:仙女与神鸟的传说
九寨沟:传说与现实交织的藏族文化瑰宝
火星冰层发现潜在生命栖息地,中纬度区域最适宜
家居DIY神器:泡沫胶填缝剂拯救老旧家具
电商物流仓储自动化升级:提升效率、降低成本的必由之路
健身教练教你平板支撑正确姿势
冬季马拉松,让你瘦成闪电⚡️
省油技巧大揭秘:从加油到开车,这些方法帮你省下大笔油费
月相变化:自然规律与人生哲理的完美融合
云南白药胶囊,真的能缓解疼痛吗?
智能匹配技术如何改变我们的恋爱观?
2024福建省大学排名:厦门大学夺冠
中金&汇丰晋信解读:近期主要货币汇率走势
糖尿病患者真的不能吃西瓜?
月相变化观测指南:从新月到满月
嫦娥五号最新观测数据揭示月相变化新秘密
高血压患者也能种牙?泰康拜博口腔专家详解种植牙注意事项
蒸螃蟹完美指南:冷水下锅加倒扣蒸制,新手也能蒸出餐厅级美味
长安UNIT马牌MC6轮胎保养指南:六大要点确保最佳性能
女奥特曼“陨落”引发热议:是剧情转折还是角色转型?
武则天称帝背后的故事:权力、改革与争议
洛克菲勒财富观:现代商界的“贪心”法则
嚼槟榔害死“雨虹”,“贤哥”也难逃厄运:槟榔致癌的真相与警示
规律作息配合饮食运动,打造科学减肥方案
年前离职还是年后跳槽?这份实用指南请收好
孙俪缺席,《甄嬛传》团综引热议
告别节食痛苦:7天科学减肥食谱全攻略