2013-08-28 161 views
0

这个问题与我刚刚问过的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()其中其需要(在其他类)?

+1

如果它不在地图中,该怎么办? – SLaks

+3

另外,不要使用'synchronized'方法;他们不提供适当的粒度级别。 – SLaks

+0

如果地图中的实例(当然,在SLaks指出的地方发现它!)和作为参数给出的实例是相同的,那么两者是等价的。 – ppeterka

回答

1

第三种方法是最好的,应该是足够的。 所有3个人都可以完成这项工作,但是在使用ConcurrentHashMap时不需要1和2。