1
我在代碼庫中發現了下面這段代碼,我不明白它是如何工作的。我在Swing有點新手,因此如果它看起來像一個愚蠢的問題,很抱歉。這個方法invokeOnEventDispatchThread做什麼?
public static void invokeOnEventDispatchThread(Runnable r){
try{
if(SwingUtilities.isEventDispatchThread()){
r.run();
}else{
SwingUtilities.invokeAndWait(r);
}
}catch(Exception e){
;
}
}
這裏將r.run()將在事件調度線程立即被調用? r.run()被稱爲asap,將它移動到隊列頭部的方法點?
謝謝。
感謝您的回覆。 「要麼你已經在EDT執行了,而且代碼只是運行」 - 代碼是否立即運行?還是將它放入事件隊列並在輪到它時運行? –
'r.run()'總是立即在當前線程中運行,無論是否爲EDT都沒有區別。所以是的,它立即運行,沒有它不在隊列中。該隊列僅適用於非EDT線程。 – assylias
謝謝。這回答了我的問題。 –