因此,在我正在编写的程序中,我使用双向广度优先搜索来搜索图形。为此,我在 1 个线程中运行 1 个广度优先搜索,然后在另一个线程中运行一个。现在,当另一个搜索中的一个元素被命中或找到目标时(这从未真正发生过,但以防万一它出于某种原因......),就说搜索找到了最佳解决方案。
我遇到的问题是,我需要将此最佳解决方案保存到一个字段中,因为我需要继续找到所有解决方案,但是由于两个线程同时命中它,该字段值变得混乱(我认为)。
有没有办法阻止对最后到达那里的线程的访问?我尝试过使用 AtomicReference 及其 compareAndSet 方法,但这并没有成功。价值仍然被搞砸了......
顺便说一句,我使用的是 java,而对于线程,我使用的是 Callable 对象。