用线程执行器简单实现Callable并通知

时间:2016-12-01 14:31:16

标签: java multithreading

我需要实现一个包含一些任务的线程池,这些任务将在不同的线程中完成。问题是2:我需要一个返回值,并且必须在准备就绪后立即使用返回值。 现在我的代码正在返回价值和工作。问题是我无法检查主线程中线程的状态,因为它以这种方式阻塞它。我需要一些回调我不知道如何实现。一些简单的例子有些帮助吗?我搜索了很多,我找不到符合我需要的东西。 这是我的Callable

public class MyAsyncCallable<V> implements Callable<V> {

    CallbackInterface ci;

    public MyAsyncCallable(CallbackInterface ci) {
        this.ci = ci;
    }

    public V call() throws Exception {

        System.out.println("Call of MyCallable invoked");
        System.out.println("Result = " + this.ci.doSomething(10, 20));
        return (V) "Good job";
    }
}

public interface CallbackInterface {
    public int doSomething(int a, int b);
}

和主要:

MyAsyncCallable<String> mac = new MyAsyncCallable<String>((a, b) -> a + b);
ex.submit(mac);

如何在不阻止主要线程要求的情况下获得结果?

1 个答案:

答案 0 :(得分:0)

如果您使用swing编写应用程序,是否可以使用inkvokeLater在工作线程的最后更新gui?

def FiletypeNumber():
    path = Boaz.get()
    print('{!r}'.format(path))
    for (dirpath, dirnames, filenames) in walk(path):
        for filename in filenames:
            _, ext = os.path.splitext(filename)
            FileTypeList.append(ext)
            if ext not in Typofiles:
                Typofiles.append(ext)