プログラミング応用b 第12回 『GUIその3 (AWT/Swingによる応用的イベント処理)』 |
【GUIプログラミングとスレッド】
クリティカルセクションに対して同期処理を施し,デッドロックなどもきっちり対処している事を,スレッドに対して
安全である(スレッドセーフ)と言う。
しかし,Swing/AWTが提供するAPI
は,実行効率が重視されていることもあって,スレッドに対して完全に安全ではない。
(部分的にはスレッドセーフとされる箇所もあるが,全体的にはスレッドセーフではない。)
つまり,JavaではGUIコンポー
ネントの描写などを複数の別個のスレッドから同時並行的に実行すると,動作矛盾や競合が起こってしまう可能性がある。
そのため,マルチスレッド機能を利用しているプログラムでは,Swingの描写処理を特定の一つのスレッドに任せる仕組み
が用意されている。ここでは詳しくは解説しないが,Javaでマルチスレッドを活用したGUIプログラムを作成する際は,この
事を思い出して,やり方を調べてみて欲しい。