というわけで、勉強会です。
前に書いたように、Swing のスレッドモデルと SwingWorker についてお話ししました。
Swing のスレッドモデルということで、まずスレッドセーフについて少し解説しました。でも、さわりだけ。マルチスレッドで実装するのは難しいんだよということが伝われば OK。
その後、Swing というか、ウィンドウシステム全般のアプリケーションがどうやって動作するのか、つまりイベント駆動について解説。ここで、重要なのはイベントをイベントキューにためておき、EventDispatchThread オブジェクトが唯一イベントキューからイベントを取りだして、イベント処理をおこなう (実際は以上するだけですが) ことです。
そうして、もう 1 つ重要なのが、イベントディスパッチスレッドと他のスレッドの間の橋渡しをしているのが、イベントキューだということです。なので、イベントディスパッチスレッド以外のスレッドから Swing の操作をおこないたい場合は、イベントキューにイベントを追加することしかできません。
よく使用される SwingUtilities.invokeLater メソッドを追っていくと、イベントキューにイベントを追加しているだけということが分かります。
これが、JFrame を生成するところで、SwingUtilities.invokeLater メソッドを使う理由というわけです。
後は、SwingWorker クラスの説明。まぁ、これはおまけみたいなものですね。
(資料はクリックすれば進みます)
勉強会の後は懇親会。地鶏と旬魚 手づくり豆冨 とととという居酒屋で歓談。北海道の状況とかいろいろをお話しできて、よかったです。
今度、札幌にいくことがあったら、またよろしくお願いします。
1 件のコメント:
Swing とかの GUI 系に関心が向いてきたようですね。ふむぅふむぅ。ようやく、流れが変わってきたようなぁ。
コメントを投稿