【问题标题】:Are these two methods equivalent?这两种方法等效吗?
【发布时间】:2013-08-28 17:04:03
【问题描述】:

这个问题与我刚刚问过的一个问题here有关。

鉴于serversprivate static ConcurrentHashMap,以下两种方法和第三种方法是否都等效,因为servers 映射将反映所有三个所做的更改?

1.

public static synchronized int releaseConnection(Server s) {
    return servers.get(s.getId()).decrementConns();
}

2.

public static synchronized int releaseConnection(Server s) {
    return s.decrementConns();
}


3.只需在需要的地方(在其他类中)调用decrementConns()

【问题讨论】:

  • 如果它不在地图上怎么办?
  • 另外,不要使用synchronized 方法;它们没有提供适当的粒度级别。
  • 如果地图中的实例(当然,正如 SLaks 指出的那样,在地图中找到它!)和作为参数给出的实例相同,则两者是等价的。

标签: java static concurrenthashmap


【解决方案1】:

第三种方式是最好的,应该足够了。 所有 3 人都可以完成这项工作,但由于您正在使用 ConcurrentHashMap,因此不需要 1 和 2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多