当前位置: 首页 > 面试题库 >

Java:如何使用Thread.join

景哲
2023-03-14
问题内容

我是线程新手。我如何才能t.join工作,从而使调用它的线程一直等到t完成执行?

这段代码只会冻结程序,因为线程正在等待自身死亡,对吧?

public static void main(String[] args) throws InterruptedException {
    Thread t0 = new Thready();
    t0.start();

}

@Override
public void run() {
    for (String s : info) {
        try {
            join();
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.printf("%s %s%n", getName(), s);
    }   
}

如果我想拥有两个线程,一个线程打印出一半的info数组,然后等待另一个线程完成,然后再进行其余操作,该怎么办?


问题答案:

使用这样的东西:

public void executeMultiThread(int numThreads)
   throws Exception
{
    List threads = new ArrayList();

    for (int i = 0; i < numThreads; i++)
    {
        Thread t = new Thread(new Runnable()
        {
            public void run()
            {
                // do your work
            }
        });

        // System.out.println("STARTING: " + t);
        t.start();
        threads.add(t);
    }

    for (int i = 0; i < threads.size(); i++)
    {
        // Big number to wait so this can be debugged
        // System.out.println("JOINING: " + threads.get(i));
        ((Thread)threads.get(i)).join(1000000);
    }


 类似资料:
  • 问题内容: 我如何对我要排序的东西进行排序? 另外,和方法之间有区别吗? 问题答案: 使用构造函数重载,该重载采用并传入一个比较器,该比较器以适合你的排序顺序的方式进行比较。如果你举一个如何排序的例子,如果不确定,我们可以提供一些示例代码来实现比较器。(虽然非常简单。) 正如其他地方所说:和只是不同的接口方法实现。在JDK源代码中,请致电。尽管由于具有指示由于大小限制而无法添加该值的能力,通常和可

  • 本文向大家介绍如何使用JAVA调用SHELL,包括了如何使用JAVA调用SHELL的使用技巧和注意事项,需要的朋友参考一下 通过ProcessBuilder进行调度 这种方法比较直观,而且参数的设置也比较方便, 比如我在实践中的代码(我隐藏了部分业务代码): 这里有必要解释一下几个参数: RUNNING_SHELL_FILE:要运行的脚本 SHELL_FILE_DIR:要运行的脚本所在的目录; 当

  • 问题内容: 我试图使用开放源代码的Java库来可视化图中的节点和边,但是我完全迷失了。 我的文件夹中有一堆jar文件。单击某些jar文件会使Java swing窗口弹出并显示图形。单击其他jar文件不会执行任何操作。 如果我知道了,我是否会将jar文件与其他文件保存在那里,还是不能使用? 如果我弄清楚了如何使用这些文件,这是否意味着如果我将Java项目转移到另一台计算机上,就必须包括它们?我将如何

  • 我想用这个curl语句做一个请求: 我想创建一个连接到Battle.net(暴雪开发者的API),但我不知道如何实现。我希望有人能帮助我。怪我英语不好。我是这个社区的新手。 错误:

  • 问题内容: 如果我这样做 它打印 问题是,我在代理后面。JVM在Windows的哪里获取代理信息?我该如何设置?我所有其他应用似乎都对我的代理感到非常满意。 问题答案: 从Java 1.5开始,你还可以将实例传递给该方法: 如果你的代理服务器要求身份验证,它将给你响应407。 在这种情况下,你需要以下代码:

  • 问题内容: 我想用于一些Web测试,并且遇到了(https://github.com/detro/ghostdriver)。我已经按照自述文件中的说明进行了构建,并且可以在指定的端口上运行它,但是我不确定如何从Java代码访问Web驱动程序。为了澄清,我已经在ruby中看到了这个示例: 我只是不确定如何从java中执行相同操作。 问题答案: 我相信此链接将回答您的问题。您将需要Selenium 2