問題タブ [eventqueue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - イベントキューをクリアするJavaスイング
これを標準的な方法で行うことは可能ですか?
これがシナリオです。
EDT でコストのかかる作業を開始します (コストのかかる操作が終了するまで、EDT はブロックされます)。
EDT がブロックされている間、ユーザーはマウス ボタンをクリック/ドラッグし続けました。すべてのマウス操作はどこかに記録されます。
EDT が解放されると (高価なものがなくなると)、マウス イベントの処理が開始されます。
ステップ 3 で必要なのは、積み重なったマウス イベントを破棄することです。EDT が解放された後、新しいマウス イベントは通常の方法で処理する必要があります。
これを達成する方法についてのアイデア。
PS: EDT がブロックされるのを防ぐことはできません (プログラム内の一部のモジュールの動作を制御していません)。
編集:「SunToolkit.flushPendingEvents()」を安全に呼び出すことができれば、EDT で高価な操作を開始する前にいつでもガラス板を配置できます。高価な操作が終了した後、EDT スレッドですべてのイベントをフラッシュします。イベントは、何もしないグラス ペインに移動します。その後、EDT を通常どおりに機能させます。
EDIT2: 問題を示すために SSCCE を追加しました。
SSCCE を実行する
「3 秒待つ」ボタンをクリックします。高価な操作をシミュレートします。マウス カーソルがビジーに変わります。
カーソルがビジー状態のときに、トグル ボタン [Click me] をクリックします。3 秒後にトグル ボタンの状態が変化した場合、マウス イベントはトグル ボタンによって受信され、トラップされませんでした。
カーソルがビジーに見える間、生成されたマウス (およびその他の) イベントが破棄されるようにします。
ありがとう。
java - EventQueue の不一致 ID
EventQueue の一貫性のない動作を示す次のサンプル コードに問題があります。
基本的には、イベントキュースレッドの ID を取得し、5 秒待ってから再度 ID を取得します。
何らかの理由で、ID が一致しません。どうやら、EventQueue が破棄され、再作成されたようです。これは正常な動作ですか?これはどこかに文書化されていますか?バグですか?別のインスタンスだったとしても、同じ ID を持つべきではありませんか?
を実行しなければThread.sleep
、ID は一致します。
私の他の質問は次のとおりです。どうすればこれを回避できますか? 作成スレッドでのみアクセスできるオブジェクトを使用しています。これがイベントキューである場合 (必ずしもそうである必要はありません)、それがまだイベントキューであるかどうかを確認できる必要があります。
java - Runnable の現在のインスタンスを取得する
ユーザーがさまざまなデータベースに保存されているタスク リストを表示できるようにするアプリケーションを作成しています。何が起こるかというと、ブラウズ可能なデータベースの名前のリスト (テキスト ファイルとして保存されています) があります。プログラムは、そのリストの最初のデータベースをロードし、内容を表示します。次に、メニューから、ユーザーがリスト内の別のデータベースを選択できるようにします。(アンディ、ボブ、カールのタスクを表示したいようなものです...)。
問題は、新しいデータベースの内容が表示されるように UI を更新する方法がわからないことです。現在リストされているタスクを削除し、DB から読み取ってから再投入するのは簡単です。しかし、EventQueue にロードされた Runnable のインスタンスにアクセスする必要があるため、(Singleton データベース ドライバーから) このコードにアクセスできません (これまでに遭遇したすべてのチュートリアルと同様に、すべての JComponents はプライベートです)。 )。EventQueue の get/peek メソッドを見ていますが、AWTEvents を返し、AWTEvent と Runnable の間に java.lang.Object 以外の関係が見られないため、必要なものではないようです。
では、現在の Runnable を取得することは可能ですか? どのように?
ご指導いただきありがとうございます。
java - NetBeansのHintsControllerとEventQueue
Netbeansプラットフォームに基づいてアプリケーションを構築しており、その一部は、使用する特定の言語用のエディタです。
構文のエラーを強調するために、次のクラスがあります。
}
例外をスローする問題のあるコードは次のとおりです。
検索結果に基づいて、次のように変更されました。
エディターに構文エラーが発生すると、次のようになります。
何が起こるかというと、HintsControllerへの呼び出しはEDT(EventDispatch Thread)で行われています。ただし、Annotations.addAnnotation()は別のスレッドで実行されています。「システムクリップボードシンクロナイザー」スレッドで実行されている場合もあれば、「非アクティブなRequestProcessor」スレッドで実行されている場合もあります。EDTで実行されているかどうかを確認するため、常にIllegalStateExceptionがスローされます。
私はNetbeansプラットフォームの使用に精通しておらず、会社でこの特定のアプリケーションを使用するのはかなり新しいので、本当に明白な何かを見逃している可能性があります。グーグルはあまり役に立たなかった。誰かアドバイスはありますか?
javascript - Node.jsイベントキューの優先度
私は、Webサイトでのユーザーのアクティビティ/場所に応じて、さまざまなIOプロセスに優先順位を付けるNode.jsアプリを作成しています。これまでのところ、すべてが順調に実行されています。重要なキューに入れられたアイテムが最初に実行され、重要度の低いものは後で実行されます。
トリッキーな部分は、一度にたくさんのことが起こっていることです-ユーザーがログインする、ユーザーが別のページに移動する、ユーザーがすぐに処理する必要があることをするなど。ほとんどの場合、Node.jsがどのように管理するかについては心配していません。イベントキューですが、場合によっては私です。イベントキューにたくさんのものがあり(おそらく、たくさんのIOバッチが戻ってきて、処理されるのを待っているため)、ユーザーが私のサイトで必要なアクションを実行する状況を想像しています。即時IO要求、およびその要求が戻ったときの即時処理。
スケーリングについて本当に心配する必要があるNode.jsアプリケーションを作成したことがないので、イベントを正しい順序で処理する機能に100%自信がありません。これは心配するのはばかげたことですか?Node.jsは非常に高速に処理するので、ブロックに実際に気付くことはありませんか、それともスケーリングするにつれて、処理される重要なものに大幅な遅延が見られる可能性がありますか?
正当な懸念がある場合、Node.js内に、イベントキューに手動で優先順位を付けることができるインターフェイスはありますか?
アップデート:
@Ricardo Tomasiはコメントで良い点を指摘しました。私のアプリが本当にCPUを集中的に使用している場合、それはおそらくNode.jsに属していないということです。それで、私のアプリは実際にはそれほどCPUを集中的に使用しておらず、おそらく正常に動作するだろうと気づきました。
それをさらに証明するために、私は少しベンチマークを行いました。
私は200,000ループをわずかに下回っていましたが、これは私が心配することは何もないことを十分に証明しました。ただし、Node.jsイベントキューを手動で管理する方法があるかどうかを知りたいと思っています。誰か知っている?
java - Java API「EDT でない場合は EDT で実行」
私が持っているいくつかの反復的なコードについてのちょっとした考え:
それほど煩わしいわけではありませんが、私は見つけられませんでしたが、これをチェックする独自の機能があるようです。
java - JComponent がソフトウェアから再描画呼び出しを受信しているかどうかを確認するにはどうすればよいですか?
JComponent が再描画されない理由を絞り込もうとしています。マウスを押して離すと再描画できるが、ドラッグできないという点で奇妙です。EventQueue を出力したり、PaintEvent が実行またはダンプされたことを確認する方法はありますか? 教えてください、ありがとう。
java - EventQueue.invokeLater vrs SwingUtilities.invokeLater
誰かがこれら2つの違いと、両方が必要なインスタンスを強調できますか?!
両方を相互に使用するアプリケーションがありますが、一方が他方より優れているかどうかを知りたいです。明らかに彼らは両方とも受け入れますRunnable object
、そして私にとっては-私は私が好きなものを使うことができると思います。
なぜこれら2つの類似した関数が異なるクラスにあるのですか?一方がawtにあり、もう一方がSwingにあることは知っていますが、同じことをしませんか?
java - GUIスレッド間で情報を共有する方法は?
GUI(Swing)を伴うクライアントアプリケーションを作成しています。私の2つのクラス、ClientClassとMainFrameは異なるスレッドを実行していますが、相互にメソッドを呼び出す必要があります。ClientClassは、EventQueueスレッド(displayGUI())でアプリケーションのライフサイクル中のある時点でGUI(MainFrame)をインスタンス化します。ClientClassには、メインフレームを更新する、クライアントクラススレッドから呼び出されるrecv()のような多くのメソッドが含まれています。次に、MainFrameには、ClientClassのメソッドを呼び出すボタンのプッシュなどのイベントによってトリガーされるメソッドがあります。例のボタン押下を処理する迷惑なメソッドがEventQueueスレッドによって呼び出されていると思いますか?
この種のアプリケーションは非常に一般的であると確信しており、他の人の洞察が大好きです。私がしていることはスレッドセーフではないと感じていますが、このアプリケーションの現在のモデルを修正/改善するにはどうすればよいですか?
コード例:
MainFrame.java:
ClientClass.java:
java - AWTEventとEventQueue
一度に1文字ずつデータを送信する外部デバイスがあります。これをJTextPaneのStyledDocumentに書き込んでいます。このデータはAWTスレッドではないスレッドで送信されるため、AWTEventsを作成し、それらをEventQueueにプッシュして、例外が発生しないようにAWTが書き込みを処理するようにする必要があります。
私は今面白い問題を抱えています...
私のテキストはドキュメントに逆方向に印刷されています。
これは明らかに、キャラクターを受け取ったときに一度に1つずつイベントキューにキャラクターをプッシュしているためです。キューは明らかに最後にプッシュされ、最初にポップされます。新しいイベントなどを追加する前にイベントを発生させて、イベントを順番に発生させることができるようにしようとしています。
http://www.kauss.org/Stephan/swing/index.htmlは、私がイベントを作成するために使用した例です。