java的synchronized关键字是堆某对象加锁,但是我们当需要对某个字符串加锁怎么办
比如对同一个订单只能有一个操作,但是对其他订单的操作不影响
使用 guava包下的 Interner 类
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
private static final Interner<String> pool = Interners.newWeakInterner();
synchronized ( pool.intern("Order_"+orderId)){
//TODO:something
}