反射API会在同步块中引起竞争吗?



如果有多个线程访问同步块,我们知道竞争条件不会发生。但是如果我们使用反射API来改变一个实例变量,它会导致竞争条件吗?如果有,我们应该如何正确使用反射API

如果我们使用反射API来改变一个实例变量,它会导致竞争条件吗?

当然可以。

如果是,我们应该如何正确使用反射API?

你可以在你设置属性的对象上同步,像这样:

Object obj = ...
Field f = c.getDeclaredField("...");
synchronize(obj) {
    f.set(obj, newVal);
}

相关内容

  • 没有找到相关文章

最新更新