我有一个包含数据的对象,我正在用这个对象排队一个Action (与一个可以执行的方法接口)(动作将使用其方法内的对象数据),排队的动作将从另一个线程执行。
我希望在将对象发送到操作队列之后锁定它(从我的主线程)。
因为我不希望对象的数据在另一个线程通过操作队列处理它之前被更改。
一旦动作队列被处理,我希望对象从另一个线程中被解锁。
代码说明:
// THREAD 1
final Object object = getObjectFromSomeWhere();
// lock the object here
concurrentActionQueue.add(new Action() {
@Override
public void execute() {
// will be executed from THREAD 2
// do something with object
//unlock here once the data is processed
}
您可能会说,我可以将对象的副本发送到Action,但我的对象包含非常大的数据,并且复制要花费很多时间,所以我不能。
有没有办法不对我的对象硬编码lock()和unlock()方法呢?
https://stackoverflow.com/questions/41395870
复制相似问题