未来正在停止程序执行的其余部分



我正在尝试从主线程并行执行 2 个作业,但如果回调方法需要很长时间才能给出响应,其余请求将暂停并等待先完成。

这是我的代码:

 private final ExecutorService executorService = Executors.newFixedThreadPool(10);
 private void executeService(String uuid) {
    System.out.println("query executed done: " + uuid);
} 
 private String getAsynchTest(final String uuid) throws Exception {
    testAsynchF = executorService.submit(
            new Callable<String>() {
                public String call() throws Exception {
                    executeService(uuid);
                    return getFutuerResult(uuid, Thread.currentThread()); // long processing
                }
            });
    return testAsynchF.get();
}
public String getFutuerResult(String uuid, Thread t) {
    String dummy = "your result for request: "+uuid;
     if (uuid.equalsIgnoreCase("112")) {
        try {
            t.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    return dummy;
}
 public static void main(String[] args) {
    SynchronousTimeoutTester tester = new SynchronousTimeoutTester();
    try {
        String one = "112"
        System.out.println("Result sync call:*** " + tester.getAsynchTest(one));
        String two = "115";
        System.out.println("Result sync call:**** " + tester.getAsynchTest(two));
    } catch (Exception e) {
        System.out.println("catched as Exception: " + e);
    }
 }

如果请求线程 112 暂停,为什么停止执行请求 115?

由于您将Thread.currentThread()传递给getFutureResult并且该方法在其线程参数上调用join()(如果uuid为"112"(,该方法将等待自己的线程结束,而它不能,因为它正在等待。

相关内容

  • 没有找到相关文章

最新更新