GUI中的线程(Swing) - 应用程序解冻

mon*_*zek 1 java user-interface swing multithreading

我对Java Swing Application中的线程有疑问.我的应用程序中有一个模块,用于接收和发送电子邮件.我想为Button(mouseClicked)分配一个动作来接收未读的电子邮件.

伪代码:

ExchangeConnector ec = new ExchangeConnector();
ArrayList<Mail> unreadMails = ec.receive(Mail.UNREAD);
// (...)
ec.close();
Run Code Online (Sandbox Code Playgroud)

我当前的实现使应用程序冻结,直到接收完成(有时可能需要超过10分钟).

问题是 - 如何完全"在后台",使我的应用程序可用于其他操作?

Ric*_*ich 5

看看SwingWorker在Swing Thread上做这种事情.

SwingWorker是:

在用户交互事件之后必须执行耗时的任务时非常有用