java只有在不同线程上的参数相同时,如何避免调用相同的方法
private void startProcess(Long id)
throws UnAuthorizedException, UnAuthenticatedException, InvalidRequestException {
......
createComponent(Long id);
......
}
如果id相同,则不应在单独的线程上再次调用此方法createComponent或startProcess本身
# 1 楼答案
如果您的方法需要时间,并且只想在ID相同(或任何参数组合)时阻止并发访问,则需要为每个ID(或任何参数组合)存储锁
这些锁可以存储在
Map
中如果它只是一个类型为
Long
的ID,那么可以直接将其用作映射的键。如果有多个参数,请将它们与所需的equals/hashcode方法一起包装到自定义类中致电:
这是一种可能的输出:
[编辑]参数自定义类的示例代码: