近頃版/another blog@hatena/Wiki/BBS
< 文学フリマ出ます。 | 仕事 >
斬新に問題を踏んだ。炎上確定。ずっと潜在していたのを発見しただけなのではあるが。
_目下最大の問題はserviceRepaintsだ。これがJavaの同期モデルの概念と真っ向対立するような実装になっていやがる気がする。「他の(特定の)スレッドに所定のメソッドの実行を要求し、その実行終了までブロックする」というどうさは、スレッドがお互いわりと気にせず動き必要なところだけsynchronizedで抑えるというJavaのマルチスレッドモデルとは根本的に異なる考え方のような。
組み込み用途だとそういうのが必要なのはわかる。しかしこの「特定のスレッド」とやらは他のイベント類(キーが押されたとか離されたとか)を受け取るメソッドでもあるのだ。
_Javaなのに妙にシングルスレッド化に拘った今の構造が悪いという面もあるのだが。しかしserviceRepaintsが存在するために(serviceRepaintsが起動させる)描画スレッドは何にも増して最優先で動かねばならないがJavaにそんなことが可能な同期化機構は存在しない。結果、全ての資源を描画スレッドに明け渡すためにはsynchronizedは使えないという縛りを被ることすらありうる。
ということで、どうも根本的な構造変更が必要な気がする。こんなことになるとわかってりゃ、iアプリでも同様のモデルに構成変更したかったところなんだがなあ。