如何让当前线程在继续之前等待另一个线程完成?

盖伊4444

我已经调度了一个新线程来处理一些与 Swing GUI 相关的执行。然而,一旦这个线程完成它的任务,所有的执行就会停止。具体来说,在下面的代码中,最终的打印语句没有被执行。为什么会这样?新线程完成操作后如何继续执行?如果这是一个愚蠢的问题,任何多线程资源建议?

另外,只是一点背景知识:我的程序同时包含 JavaFX 和 Swing GUI,这就是为什么第一个线程是 JavaFX 线程的原因。我目前正在尝试更新 Swing GUI,然后继续执行。

谢谢您的帮助。

  System.out.println("Thread: " + Thread.currentThread());
  //prints "Thread : [JavaFX Application Thread,5,main]"
  new Thread(new Task<Void>(){
    @Override protected Void call() throws Exception{
      System.out.println("Thread: " + Thread.currentThread());
      //prints "Thread : [Thread-6,5,main]"
      updateData();
      updateSwingGUI();
      return null;
    }
  }).start();
  System.out.println("I'm not being executed");
jbx

如果您想阻塞当前线程,直到另一个线程完成其任务,也许在单独的线程上执行任务实际上毫无意义,您没有实现任何并行性。

Task甚至没有返回任何内容,因此在返回第二个线程的结果之前,甚至没有其他理由阻止。

如果您仍然想并行执行它并阻止等待任务完成,则可以使用以下命令:

System.out.println("Thread: " + Thread.currentThread());
Thread thread = new Thread(() -> {
      System.out.println("Thread: " + Thread.currentThread());
      updateData();
      updateSwingGUI();
   }).start();

System.out.println("I'm on the old thread, can do something in parallel.");

thread.join();
System.out.println("Second thread finished updating GUI.");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在继续当前线程之前等待事件发生?

来自分类Dev

在等待另一个线程完成工作时取消阻塞主线程

来自分类Dev

在等待另一个线程完成工作时取消阻塞主线程

来自分类Dev

如何让一个线程等待另一个线程?

来自分类Dev

HibernateException:当GORM查询移入另一个域类时,找不到当前线程的会话

来自分类Dev

在等待另一个线程完成时刷新UI

来自分类Dev

等待邮件在另一个线程中发送完成

来自分类Dev

等待邮件在另一个线程中发送完成

来自分类Dev

Jenkins是否等待当前测试启动的线程终止以启动另一个测试?

来自分类Dev

如何使一个函数在运行之前等待另一个函数的完成

来自分类Dev

在另一个线程中创建QObject并将其检索到当前线程= msvc16上的Debug中的ASSERT失败

来自分类Dev

在执行另一个之前等待 SwingWorker 完成

来自分类Dev

退出当前线程并移至下一个

来自分类Dev

如何保证异步方法继续在另一个线程上运行?

来自分类Dev

一个线程能否在另一个线程完成静态初始化(类加载)之前进入一个静态方法?

来自分类Dev

[javascript,jQuery]如何在继续播放另一个没有回调的动画之前等待动画完全完成

来自分类Dev

前一个线程完成后启动另一个线程

来自分类Dev

Matlab:当主线程继续执行主要任务时,如何分叉另一个线程来加载数据?

来自分类Dev

如何在执行另一个之前等待ajax成功处理程序完成

来自分类Dev

当另一个线程等待HTTP响应时,另一个线程会执行吗?

来自分类Dev

停止当前线程然后创建一个执行相同操作的新线程?

来自分类Dev

线程完成后调用另一个线程中的方法

来自分类Dev

如何等待直到异步函数完成运行然后才继续运行另一个函数?

来自分类Dev

在开始另一个之前等待一个发布完成

来自分类Dev

在c中,如何使一个线程等待其他线程完成

来自分类Dev

如何冻结一个线程并从另一个线程通知它?

来自分类Dev

如何阻止一个线程修改另一个线程正在使用的数组?

来自分类Dev

如何使一个线程杀死另一个线程?

来自分类Dev

当另一个使用多线程完成时,启动一个方法

Related 相关文章

  1. 1

    如何在继续当前线程之前等待事件发生?

  2. 2

    在等待另一个线程完成工作时取消阻塞主线程

  3. 3

    在等待另一个线程完成工作时取消阻塞主线程

  4. 4

    如何让一个线程等待另一个线程?

  5. 5

    HibernateException:当GORM查询移入另一个域类时,找不到当前线程的会话

  6. 6

    在等待另一个线程完成时刷新UI

  7. 7

    等待邮件在另一个线程中发送完成

  8. 8

    等待邮件在另一个线程中发送完成

  9. 9

    Jenkins是否等待当前测试启动的线程终止以启动另一个测试?

  10. 10

    如何使一个函数在运行之前等待另一个函数的完成

  11. 11

    在另一个线程中创建QObject并将其检索到当前线程= msvc16上的Debug中的ASSERT失败

  12. 12

    在执行另一个之前等待 SwingWorker 完成

  13. 13

    退出当前线程并移至下一个

  14. 14

    如何保证异步方法继续在另一个线程上运行?

  15. 15

    一个线程能否在另一个线程完成静态初始化(类加载)之前进入一个静态方法?

  16. 16

    [javascript,jQuery]如何在继续播放另一个没有回调的动画之前等待动画完全完成

  17. 17

    前一个线程完成后启动另一个线程

  18. 18

    Matlab:当主线程继续执行主要任务时,如何分叉另一个线程来加载数据?

  19. 19

    如何在执行另一个之前等待ajax成功处理程序完成

  20. 20

    当另一个线程等待HTTP响应时,另一个线程会执行吗?

  21. 21

    停止当前线程然后创建一个执行相同操作的新线程?

  22. 22

    线程完成后调用另一个线程中的方法

  23. 23

    如何等待直到异步函数完成运行然后才继续运行另一个函数?

  24. 24

    在开始另一个之前等待一个发布完成

  25. 25

    在c中,如何使一个线程等待其他线程完成

  26. 26

    如何冻结一个线程并从另一个线程通知它?

  27. 27

    如何阻止一个线程修改另一个线程正在使用的数组?

  28. 28

    如何使一个线程杀死另一个线程?

  29. 29

    当另一个使用多线程完成时,启动一个方法

热门标签

归档