EventQueue で現在キューに入れられている Runnable の数を特定する方法はありますか?... システムの EventQueue、つまり EDT で実行されるすべての Runnable を意味します。そして、キューを台無しにしますか?
私がやりたいのは、GUI Runnables を優先することです... ユーザー主導の GUI イベントが発生した場合は、すぐに実行する必要があり、キューに入れられた Runnables の前にキューをジャンプします (ちなみに、これらはすべて変更に関係しています)。非表示の Swing コンポーネント 注意: 最新の Swing ガイドライン: すべての Swing コンポーネントは、非表示であっても EDT で変更する必要があります)。
「緊急」および「非緊急」Runnables を使用した単純で不自然なキューの可能性があります。各 Runnable は「観察可能な」AtomicInteger カウンターをインクリメントし、それぞれの実行によってそれをデクリメントできます...そして BlockingQueue はそれを保証します緊急でないランナブルは、BlockingQueue のサイズが 1 (または 2 または 0) に変更された場合にのみ「invokeLater」に送信されます。本能的には、そのような配置ではかなりのレイテンシーが発生すると思います。
さらに、EDT 自体のキューに直接干渉できると便利です。自分の EDT キューをロールする必要がありますか? それは可能ですか?
明らかに、EDT キューの状態の監視 (またはそのキューへの介入) は、非 EDT スレッドから行う必要があります。私が知っている限り、「スレッドの可視性」の問題があるかもしれません...