【问题标题】:Making class level DTO(instance variable) thread safe java使类级DTO(实例变量)线程安全java
【发布时间】:2015-03-30 19:15:30
【问题描述】:

我有班级级别的 DTO。我必须让它线程安全。 我为什么要这样做是当多个请求同时到达时,数据正在跨线程交换。 我知道类级变量不是线程安全的。但是有没有办法让它线程安全。 我不想使用同步作为它的性能影响并且不会在负载平衡中工作。任何想法如何实现这一目标

帮助表示赞赏:)

提前致谢

代码:

public class MyExecutor implements Executor {

    private DataDTO DataDTO;
//Getters and setters
.
.

。 这个 DTO 被发送到下一层 }

【问题讨论】:

标签: java multithreading thread-safety


【解决方案1】:

通过将所有类成员声明为 final 使 DTO 不可变,在创建 DTO 时提供一个构造函数来设置它们(类成员)。

这样做可以确保所有值都是只读的/设置一次。此外,您还可以删除(或不生成/提供)任何 setter。例如:

public final class DataDTO {
  private final String data;
  private final String description;

  public DataDTO(String data, String description) {
    this.data = data;
    this.description = description;
  }

  public String getData() { return data; }

  public String getDescription() { return description; }
}

注意:如果您需要从该类扩展,请删除 final

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多