Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我不能马上换两个进度条_Java_Multithreading_Swingworker_Invokelater_Swingutilities - Fatal编程技术网

Java 我不能马上换两个进度条

Java 我不能马上换两个进度条,java,multithreading,swingworker,invokelater,swingutilities,Java,Multithreading,Swingworker,Invokelater,Swingutilities,我想马上换两个进度条。但我不能 我想说的是 nextButton.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { WorkProgressBar.setVisible(true); FileProgressBar.setVisible(false); AND

我想马上换两个进度条。但我不能

我想说的是

nextButton.addMouseListener(new java.awt.event.MouseAdapter() {     
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        WorkProgressBar.setVisible(true);
        FileProgressBar.setVisible(false);

        AND SO ON(about 2 secs.)

        WorkProgressBar.setVisible(false);
        FileProgressBar.setVisible(true);
    }
}
该代码大约需要2秒或更长时间

但我能看到的只是ProgressBar的闪烁

所以我搜索了很多信息

我使用了线程、swingworker、swingutilities(调用器)

但我无法解决


我怎样才能解决这个问题。请帮助我。

您可能希望将在这2秒钟内完成的任务分配给工作线程。假设您想A.)减少一个进度条,B.)增加另一个进度条

您可以通过实现其run方法来分配一个线程来执行任务。然后另一个线程将在B)上执行工作。)

现在,您希望主线程(分配这两个线程开始工作)等待工作线程完成。因此,在执行
thread1.start()
thread2.start()
之后,您可以通过执行联接来等待它们完成,如下所示:

try {
    thread1.join();
    thread2.join();
} catch (Exception e) { e.printStackTrace() }
'依此类推(约2秒)'将阻止处理发送到表示ProgressBar的窗口的消息。它们只在事件处理程序退出时获取进程,因此visible属性最终会被短暂切换,并且该条只会闪烁。