カード リーダーを操作するための GUI を作成しました。これは主に、FileChooserダイアログを表示し、選択Fileしたものを CardHopper にキューに入れる [ADD] ボタンで構成されていJListます。
今、私はCPU(別JFrameのスレッド上の別の)がカードリーダーの要求を行えるようにしたいと考えています。例えば、カードを読んで私に送ってください。カードリーダーが GUI を持つ前は、CPU と同じスレッドで動作するモデルだったので、そのreadCard()メソッドを呼び出すだけで済みました。別のスレッドになったので、通信する正しい方法はメッセージパッシングを使用することのようです。
を使用して何かを実装しようとしていましたPriorityBlockingQueue。これにより、CPU はputキューでカード読み取りコマンドを実行し、CardReader はtakeそのコマンドを実行しますが、CardReader スレッドは通常、NetBeans が提供する Swing コード内のどこかでブロックされることに気付きました。 GUIイベントを待っていて、イベントキューに何かが到着するのを知らない. さらに、この「バックエンド」要求はデータ モデルを変更します。そのため、モデル内で何らかのコードを実行できListDataListenersたとしても、GUI が GUI イベントを待機している間に GUI に通知を「起動」するのはコーシャーでしょうか?
これが難解すぎないことを願っています。私はまだ、GUI とスレッドの仕組みについて理解を深めようとしています。