java - 从 threadExecutor 返回值

标签 java multithreading executor

如何在固定 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/

相关文章:

java - Apache HttpClient 4.0-beta2 httppost,如何添加引用?

java - 从适配器访问 SQLite Helper

java - 连接两个 int[]

android - WebViewClient shouldInterceptRequest 卡住 WebView

没有 pthreads 的 C 多线程 : "The program no longer exists" Seg fault

Java多线程应用程序只使用一个核心

Java:它创建的定时器和线程

java - isReachable 给出奇怪的结果

java - 尝试上传图片但收到此错误 Android 应用程序

caching - 我们可以在执行器上跨批处理使用缓存的 RDD