java - 让主线程等待,直到新的单线程在java中完全执行

标签 java multithreading java-ee-6 schedule

调度程序通过新的单线程从服务器获取配置。但即使调度程序正在执行 config() 以从服务器获取配置,应用程序也会继续执行。

App{
    XXXX;
    XXXX;
    try{
       scheduler()
    } catch(Exception e){

}

public void scheduler(){

ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();

        Callable<Void> callable = new Callable<Void>() {
            public Void call() throws Exception {
                try {
                    config();
                } finally {
                   service.schedule(this, TimeOut(), TimeUnit.SECONDS);
                }

                return null;

            }

        };
        service.schedule(callable, 0, TimeUnit.SECONDS);


}

如何让主线程等待,直到单线程获取配置完成。

最佳答案

在触发 ExecutorService#shutdown() 后尝试使用 ExecutorService#awaitTermination(time, unit):

ExecutorService#awaitTermination() blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first.

service.shutdown();
try {
    // Use Long.MAX_VALUE to wait forever, see link below
    service.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
    // TODO ...
}

ExecutorService#awaitTermination()

Timing

关于java - 让主线程等待,直到新的单线程在java中完全执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48161365/

相关文章:

java - 在 varchar 列中存储快速编码数据

java - 在 heroku 上运行 spring tomcat 应用程序

java - 为什么我在套接字连接的 Java 线程中看到这种奇怪的输出?

python - Stanford NER 和 POS,大数据的多线程

python - 仅锁定 Python 中的一部分威胁

inheritance - Java EE 6 注解继承之谜

java - 如何强制Rabbit MQ重新累积并发送消息?

java-如何指定我与源代码一起存储的文件的路径

jakarta-ee - 是否可以在 ejbs 中以编程方式添加拦截器?

jsf-2 - 如何从richfaces弹出窗口刷新父jsf页面