线程本身是同一程序中的不同进程。
在 java 中,有许多不同的线程类型,而您需要的一种是SwingWorker
.
来自 Oracle 的文档的定义/使用是:
当 Swing 程序需要执行一个长时间运行的任务时,它通常使用其中一个工作线程,也称为后台线程。在工作线程上运行的每个任务都由 javax.swing.SwingWorker 的一个实例表示。SwingWorker 本身是一个抽象类;您必须定义一个子类才能创建 SwingWorker 对象;匿名内部类对于创建非常简单的 SwingWorker 对象通常很有用。
如您所见,这就是您所需要的;一个后台线程。
final InfiniteProgressPanel glassPane;
...
class GlassPaneHandler extends SwingWorker<String, Object> {
@Override
public String doInBackground() {
glassPane.start();
return setUpPaneAndStuff();
}
@Override
protected void done() {
try {
glassPane.stop();
} catch (Exception e) { } //ignore
}
private void setUpPaneAndStuff() {
//code
}
}
...
(new GlassPaneHandler()).execute(); //place this in your code where you want to initiate the pane
有关更多信息,请参阅:http ://docs.oracle.com/javase/8/docs/api/javax/swing/SwingWorker.html