如何在固定 threadExecutor 中访问 getOptimizedMol() 方法?我需要在每个优化器线程完成时获取返回分子?
import chemaxon.marvin.calculations.ConformerPlugin;
import chemaxon.marvin.plugin.PluginException;
import chemaxon.struc.Molecule;
public class Optimizer3D implements Runnable {
private Molecule mol3D;
private Molecule mol2D;
Optimizer3D(Molecule mol2D_)
{
this.mol2D = mol2D_;
}
@Override
public void run() {
mol3D = chemAxonOptimizer();
}
private Molecule chemAxonOptimizer()
{
//optimize molecule code not shown
return molecule;
}
public Molecule getOptimizedMol()
{
return mol3D;
}
}
最佳答案
一种简单的技术是将某种 JobListener 添加到您的可运行对象中:
public class Optimizer3D implements Runnable {
public static interface JobListener {
public void onJobFinished(Optimizer3D job);
}
private Molecule mol3D;
private Molecule mol2D;
private JobListener jobListener;
Optimizer3D(Molecule mol2D_, JobListener listener)
{
this.mol2D = mol2D_;
this.jobListener = listener;
}
@Override
public void run() {
mol3D = chemAxonOptimizer();
if (jobListener!=null) {
jobListener.onJobFinished(this);
}
}
private Molecule chemAxonOptimizer()
{
//optimize molecule code not shown
return molecule;
}
public Molecule getOptimizedMol()
{
return mol3D;
}
}
关于java - 从 threadExecutor 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9674941/