当前位置: 首页 > 知识库问答 >
问题:

Java中Thread.CurrentThread().Join()的使用

阎丰羽
2023-03-14
public class App {

    private static final URI BASE_URI = URI.create("http://localhost:8080/base/");
    public static final String ROOT_PATH = "helloworld";

    public static void main(String[] args) {
        try {
            System.out.println("\"Hello World\" Jersey Example App");

            final ResourceConfig resourceConfig = new ResourceConfig(HelloWorldResource.class);
            final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(BASE_URI, resourceConfig, false);
            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
                @Override
                public void run() {
                    server.shutdownNow();
                }
            }));
            server.start();

            System.out.println(String.format("Application started.\nTry out %s%s\nStop the application using CTRL+C",
                    BASE_URI, ROOT_PATH));

            //////////////////////////////
            Thread.currentThread().join();
            //////////////////////////////

        } catch (IOException | InterruptedException ex) {
            //
        }

    }
}

这是正确的吗?如果有,为什么会有?

共有1个答案

赏光霁
2023-03-14

thread.CurrentThread().Join()永远阻止当前线程。在您的示例中,这将防止main退出,除非程序被终止,例如在Windows上使用Ctrl+C。

如果没有这一行,main方法将在服务器启动后立即退出。

另一种方法是使用thread.sleep(long.max_value);

 类似资料:
  • 在另一个主题中,和等Java解决方案中的thread.currentThread().join()的用户被认为是一些评论者可以接受的方法,但有一个评论者说,应该使用一些有用的方法来完成,这些方法可以使线程保持活动,而不是仅仅使它Hibernate。 我理解他的观点,但是如果没有什么事情可以使线程保持活动状态,就像这个例子,我订阅了一个“Topic like”以异步获取消息呢? 使用Thread.C

  • Join(string,interface{},string) 第一个参数为连接类型,当前支持INNER, LEFT OUTER, CROSS中的一个值, 第二个参数为string类型的表名,表对应的结构体指针或者为两个值的[]string,表示表名和别名, 第三个参数为连接条件。 以下将通过示例来讲解具体的用法: 假如我们拥有两个表user和group,每个User只在一个Group中,那么我们

  • 问题内容: 我需要使线程顺序。他们需要按以下顺序启动: 当D完成时,C可以完成,然后B,然后是A。 在这种情况下,最好使用线程或?为什么呢? 我的线程需要启动并打印消息,完成后需要打印。 问题答案: 由于您正在等待“其他”线程完成(即完成执行),因此是更好的选择。 的javadoc 简单地说: 等待该线程死亡。 然后,该机制相对简单: 要说明:您需要参考。因此,指向,指向,指向和不指向任何对象(它

  • 我刚刚读完这篇文章:Java-5 ThreadPoolExecutor与Java-7 ForkJoinPool相比有什么优势?并觉得答案不够直截了当。 您能用简单的语言和示例解释一下Java7的Fork-Join框架和旧的解决方案之间的权衡吗? 我还从javaworld.com上读了谷歌的第一篇文章“Java提示:何时使用ForkJoinPool vs ExecutorService”,但这篇文章

  • 问题内容: 众所周知 返回调用线程的标识符,该标识符与setThreadPriority(int,int)一起使用。 但是我发现不等于。因此,我猜前者是JVM版本的线程ID,后者是Linux版本的线程ID。 我对吗?如果是这样,为什么Java会创建自己的线程ID而不使用Linux线程ID? 更新: 经过进一步研究并阅读了android的源代码,我有了新的认识: 是与平台(OS)相关的操作,在and

  • < code>onIncomingCall()是来自第三方库< code>pjsip中的类的重写方法。当使用SIP进行传入呼叫时,调用此方法。不知何故,这个方法使得只有当呼叫应答代码在同一个方法中或者在同一个方法中被调用时,呼叫才有可能被应答。但是我希望当用户按下按钮时,电话被接听。我已经创建了一个回调函数,并让用户在呼叫到来时按下按钮,但是如果在< code>onIncomingCall()方法