我有一个类似这样的Runnable类:
Class R1 implements Runnable {
private static final Log LOGGER = LogFactory.getLog(R1.class);
private final ObjectClass obj;
private final SomeService service;
public R1(ObjectClass obj, SomeService service) {
this.obj = obj;
this.service = service;
}
@override
public void run() {
String value = this.obj.getSomeValue();
LOGGER.debug("Value is " + value);
// some actions, such as:
// service.someMethod(obj);
}
}
我使用ExecutorService对象来执行R1并将R1放入队列中。但是,稍后在R1之外,我更改了传递给R1的ObjectClass中的值,因此getSomeValue()之后的动作不像我预期的那样运作。如果我想保持R1中ObjectClass对象的值不变,该怎么办?假设该对象很大并且有很多get和set方法。
为了使问题更清晰,我需要将obj传递到一个服务类对象中,该对象也用作runnable类的参数。我已相应地更改了原始代码。