java使用字符串作为锁,并且保证字符串内容相同是同一把锁
使用google工具:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
使用示例:
// 使用com.google.common.collect的Interner类
private final Interner<Object> interner = Interners.newWeakInterner();
public void test() {
// 代码加锁示例:
// 只要字符串内容相同,不管是实例化的字符串对象还是通过“”创建的字符串对象,都是同一把锁
String authtoken = new xxx; 或者“”
synchronized (interner.intern(authtoken)) {
}
}