`
朱秋旭
  • 浏览: 230724 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lombok 之 Synchronized

阅读更多

LomBok 的相关目录已经整理出来,希望大家可以根据需求自助学习,好工具要大家分享:

@Cleanup     

@Getter, @Setter

@ToString

@EqualsAndHashCode

@Constructor

@Data & @Value

@SneakyThrows

@Synchronized

@Getter(lazy=true)

@Log

 

@Sychronized 是一个处理线程安全问题的annotation, 他的使用方法和关键字 synchronized比较类似,但是有一些不同点就是,关键字synchronized是锁定当前对象(this指针) , 而@Synchronized则会锁定一个private的常量。如果当前类中没有这个常量,就会自动生成一个。

import lombok.Synchronized;

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");
  }
}

 

如果当前锁定的方法是一个静态的方法的话,会自动生成一个静态常量,如果是一个普通方法的话会生成一个普通常量,类型为Object

 

public class SynchronizedExample {
  private static final Object $LOCK = new Object[0];
  private final Object $lock = new Object[0];
  private final Object readLock = new Object();
  
  public static void hello() {
    synchronized($LOCK) {
      System.out.println("world");
    }
  }
  
  public int answerToLife() {
    synchronized($lock) {
      return 42;
    }
  }
  
  public void foo() {
    synchronized(readLock) {
      System.out.println("bar");
    }
  }
}

 

0
0
分享到:
评论

相关推荐

    lombok_lombok_源码.zip

    4. 预处理器(Preprocessor):Lombok 包含了一些预处理器,如 `@Builder` 和 `@Synchronized`。这些预处理器负责处理复杂的逻辑,例如 `@Builder` 可以生成 builder 模式代码,`@Synchronized` 会将方法封装在一个...

    eclipse整合lombok文档

    Eclipse 整合 Lombok 文档 Lombok 是一个 Java 库,用于减少 ...* @Synchronized:对象同步 * @SneakyThrows:抛出异常 * @Log4j:log4j 日志声明 通过使用 Lombok,可以大大简化 Java 代码的编写,提高开发效率。

    lombok-1.18.12.jar

    - `@Synchronized`:同步方法或属性,提供线程安全。 - `@Builder`:提供构建者模式,使创建复杂对象变得更简单。 - `@Log4j`,`@Slf4j` 或 `@CommonsLog`:自动导入并初始化日志对象,如log4j,slf4j等。 4. *...

    lombok文件jar包

    3. **访问控制**:`@Synchronized` 可以将方法或块同步,以避免并发问题。`@Getter(onMethod_ = @Override)` 可以强制生成的getter覆盖父类的方法。 4. **构建者模式**:`@Builder` 提供了一种方便的方式来构建复杂...

    lombok.rar

    5. **其他注解**:除了上述的基本注解,Lombok还提供了一些高级特性,如`@NonNull`进行非空检查,`@Cleanup`自动关闭资源,`@Builder`用于构建器模式,`@Synchronized`同步方法,以及`@SneakyThrows`悄悄抛出异常等...

    lombok.jar.rar

    10. `@Synchronized`:同步方法或属性,确保多线程环境下的安全性。 在实际开发中,Lombok可以显著减少样板代码,提高代码的可读性和简洁性。然而,使用Lombok也需要注意几点: 1. 需要安装对应的IDE插件,以便在...

    lombok-1.16.18.zip

    8. `@Synchronized`:用于方法,使得方法在多线程环境下具有互斥性,确保同一时间只有一个线程可以执行该方法。 使用Lombok时,需要注意IDE的配置和编译器支持。例如,Eclipse需要安装Lombok插件,而IntelliJ IDEA...

    lombok-1.16.16

    7. **@Synchronized**:将方法或块同步化,以避免多线程环境下的并发问题。 8. **@Builder**:用于创建对象的 builder 模式,使构建复杂对象变得更加简洁。 9. **@Log4j**、**@Logback**、**@SLF4J** 等:这些注解...

    Lombok 是一种 Java™ 实用工具

    1. **@Data**: 这是Lombok最常用的注解之一,它会为类生成所有字段的getter和setter,同时还会添加equals()、hashCode()以及toString()方法。如果类中有final字段,@Data还会生成一个全参数的构造函数。 2. **@...

    lombok-plugin-0.34.1-2018.3.zip

    Lombok 的理念与之相符,两者结合使用,可以进一步提升开发效率,减少代码量,使代码更专注于业务逻辑。在 Spring Boot 的数据访问层(DAO)和领域模型(Entity)中使用 Lombok,可以减少大量样板代码,让代码更清爽...

    lombok.zip

    9. `@Synchronized`: 为方法添加同步锁,确保多线程环境下的安全性。 10. `@Cleanup`: 自动关闭资源,通常用在流式操作中,例如FileInputStream等需要关闭的资源。 为了使用Lombok,你需要在IDE(如IntelliJ IDEA...

    Lombok插件

    Lombok还提供了其他实用注解,如@Log(用于自动创建日志对象),@Builder(用于构建者模式),@Synchronized(同步方法)等。这些注解使得开发者可以更加专注于业务逻辑,而不是重复的基础设施代码。 总之,Lombok...

    LombokLombokLombok

    除了这些主要注解,Lombok还有其他实用注解,如`@Cleanup`用于自动关闭资源,`@Synchronized`用于同步方法或块,`@Log`系列注解(如`@Log4j`、`@SLF4J`等)用于方便地引入日志记录。 为了使用Lombok,需要在项目中...

    lombok-intellij-plugin-releasebuild_0.29-2019.2.zip

    4. **其他有用注解**:如`@Log`系列注解,可以为类自动添加日志记录器,`@Cleanup`用于自动关闭资源,`@Synchronized`同步方法等,都极大地提高了代码的可读性和效率。 安装Lombok插件到IntelliJ IDEA 2019.2的步骤...

    lombok-plugin-0.25-2017.3.zip

    此外,Lombok还提供了其他高级功能,如`@NonNull`用于标记非空字段,`@Builder`用于构建复杂的对象,以及`@Synchronized`和`@Log`家族注解(如`@Log4j`、`@Slf4j`等)为类提供日志记录支持。 总的来说,Lombok插件...

    Java简化臃肿代码之Lombok

    在实际开发中,Lombok还提供了其他实用的注解,如`@Cleanup`用于自动关闭流,`@Synchronized`用于同步方法,`@Builder`用于构建者模式等。这些工具可以帮助我们编写更简洁、更易于维护的代码。 为了在IDE中启用...

    lombok jar包

    7. **@Synchronized**:在方法上应用此注解,可以使得该方法具有同步锁,避免多线程环境下可能出现的问题。 8. **@Builder**:允许你创建一个构建者模式,方便地创建复杂对象。 9. **@Log**系列注解(如@Log4j、@...

    lombokjar包 1分

    - `@Data`: 这是Lombok最常用的注解之一,它会在一个类上生成所有字段的getter和setter方法,同时还会添加equals()、hashCode()和toString()方法。 - `@Getter` 和 `@Setter`: 这两个注解分别用于生成getter和...

    lombok 插件 idea

    - 结合使用:Lombok可以与MapStruct、Project Lombok的额外模块(如@Log、@Synchronized等)配合,提高代码质量。 7. **注意事项** - 不适用于所有项目:某些情况下,如单元测试、序列化或需要手动控制访问级别的...

    idea插件lombok

    例如,使用`@NonNull`注解可以进行非空检查,`@Cleanup`可以帮助自动关闭资源,而`@Synchronized`则用于线程安全的属性访问。这些注解让代码更简洁,减少了出错的可能性。 总的来说,Lombok插件是IntelliJ IDEA中的...

Global site tag (gtag.js) - Google Analytics