【发布时间】:2021-04-19 21:27:10
【问题描述】:
我在某些类上使用了注解,通过反射,我得到了该注解的一些字符串,每个类都是唯一的。
我正在考虑使用该字符串来同步代码块,但我只想在注释字符串值相同的情况下阻止对代码的访问,如果字符串不同,则另一个线程可以进入执行其任务。我知道我不能直接使用字符串并且整数没有监视器,所以我不能直接使用哈希码。当我使用 jMeter 加载测试这段代码时,这种方式是否会产生任何问题。
public class LockObject {
private String lockString;
public LockObject(String lockString) {
this.lockString = lockString;
}
public int hashCode() {
returns hashcode for string;
}
@Override
public boolean equals(Object obj) {
}
}
public class TestClass {
public void someMethod() {
String annotationString = "fetchedByAnnotation that i use on some class by reflection";
//what i want if string is same then second thread won't enter this block
synchronized (new LockObject(annotationString)) {
//some task based on that string
}
}
}
【问题讨论】:
标签: java multithreading parallel-processing synchronized java-threads