3 回答

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
在事件調(diào)度線程(EDT)上運(yùn)行長(zhǎng)期運(yùn)行的任務(wù)會(huì)導(dǎo)致GUI鎖定。
因此,所做的事情之一是使用SwingUailties.InvokeLater和InvokeAndWait來(lái)保持GUI的響應(yīng)性。
SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { Thread.sleep(100000); } catch (InterruptedException e) { e.printStackTrace(); } } });

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
你是正確的。通常,將在事件分派線程之外調(diào)用InvokeLater,以便在事件分派線程上運(yùn)行某些內(nèi)容,例如,長(zhǎng)時(shí)間運(yùn)行的任務(wù)可能會(huì)調(diào)用InvokeLater來(lái)更改顯示。這是因?yàn)閷?duì)Swing對(duì)象的操作必須發(fā)生在事件線程中,以維護(hù)線程安全。
添加回答
舉報(bào)