java - 等到线程完成

标签 java multithreading swing

我有一个内部线程可以执行某些操作的函数

public static void animate(int column,Image image)
{

    new Thread(new Runnable() {
        public void run() {
            try {

                    /* Code */
                    repaint();
                    Thread.sleep(500);
                    repaint();

            } catch (InterruptedException ex) {
            }
        }
    }).start();
}

我在updateBoard函数中调用了动画函数,然后执行了i++。
我想使函数动画在线程结束之前不继续执行I++

animate功能内部,我从头开始使用repaint()函数,当我尝试使用.join()时,它阻止了repaint()线程。
public static void updateBoard(int column, Image image) {
    int i = 0;
    animate(column,image);
    i++;
}

最佳答案

像这样:

Thread t = new Thread(new Runnable(){...});
t.start();

t.join();

但是,这毫无意义。如果您要启动一个线程并立即阻塞等待它完成,您将不会获得任何并行性。您也可以只在当前线程中调用Runnable::run方法...并避免创建/启动线程的开销(并非微不足道!)。

关于java - 等到线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61521072/

相关文章:

java - 在run方法中,如何找到start是从哪里调用的?

java - ScheduledExecutorService 中的多个 future 的异常处理

Java Swing - 单用户应用程序到多用户应用程序

java - 在没有任何 Swing 元素的情况下检测 JFrame 上的点击

java - 我的问题是为什么按下按钮时我输入的文本不会显示在另一个 TextView 中?

java - Android 中切换状态播放、暂停、停止

Java 线程管理和应用程序流程

java - 在 Java 中将 Map 中的 Map 转换为 JSON 的问题

java - 这个 Java 片段的 Perl 等价物是什么? (Perl 术语中的 Java 解释)

Java Swing 文件选择器错误