gpt4 book ai didi

java - Java 中的多线程,我希望 UI 和代码并行执行

转载 作者:行者123 更新时间:2023-11-29 09:48:50 28 4
gpt4 key购买 nike

我有一个带进度条的 JFrame,我的代码应该在后台运行它,显示进度条中的进度。

我在 Progressbar 类中实现了 runnable 并启动了线程。但是进度条框架没有显示完整..它卡住了,在我的代码完全执行后显示完整,即在主线程关闭后。

我知道这是一些基本错误。

public class ProgressScriptUI extends JFrame implements Runnable{

@Override
public void run() {
// TODO Auto-generated method stub
setTitle("Progressing to Generate DDL Scripts");
setBounds(400, 250, 850, 400);
getContentPane().setLayout(null);
JProgressBar progressBar= new JProgressBar(0,100);
progressBar.setBounds(200, 100, 500, 20);
add(progressBar);
setVisible(true);

setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

}

//I am calling the below code in some other class
ProgressScriptUI progress = new ProgressScriptUI();


Thread uiThread = new Thread(progress);
uiThread.start();
oracleValidateOLDorNEW.execute(); //Code that I need to call in back ground

最佳答案

所有 UI 代码都必须在事件调度线程的上下文中执行。这使得在保持 UI 最新的同时在后台工作有点棘手。

看看Concurrency in Swing寻求解决方案的建议和建议。

可能最简单的方法是使用 SwingWorker,它具有发布/处理 数据的功能,以便将其同步回 EDT以及进度回调

你可以看看

举一些例子....

关于java - Java 中的多线程,我希望 UI 和代码并行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272842/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com