我有一个包含数据的对象,我正在用这个对象(动作将在其方法中使用对象的数据)排队一个Action(可以执行的方法的接口)和排队的Actions将从另一个线程执行。Java多线程问题
我想锁定对象后发送到行动队列(所以从我的主线程)。
因为我不希望对象的数据在其他线程通过动作队列处理之前被更改。
我想从另一个线程解锁对象,一旦行为队列被处理。
代码说明:
// 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
}
你会说,我可以发送对象的副本的动作,但我的对象包含非常大的数据复制花费到太多的时间,所以我不能。
有没有办法做到这一点,没有硬编码lock()和unlock()方法到我的对象?
消费者生产者也许格局?这里是一个非常简单的(不是最好的)[教程](https://www.tutorialspoint.com/javaexamples/thread_procon.htm)以 – AntJavaDev