2002年10月31日の日記です


Synchronized, wait & notify  2002-10-31 17:58:01  コンピュータ

今年の風邪はしつこくて、まだ病み上がりな感じだ。

体が完調でない間も、Java プログラムを細々と作りつづけている。


以前に i-アプリとして作ったものの移植…だったはずが、i-アプリと EZplus の機能があまりに違うことや、せっかくだから機能アップしたいという欲が出たこともあり、大幅な作り直しとなっている。

どのくらい違うかといえば、MS-DOS と Windows 3.1 くらい違う。 Win95 ほど違うという自信はない (^^;;


つまり「見た目が良くなりました」ってこと。

中身はそれほど変わらないのだが、見た目を整えるというのは思った以上に大変なことなのだ。



今月の頭から作っているのに、まだまだα版と呼べるレベルまでも達していない。

一から作っているので、以前は持っていた機能をまだ持っていなかったりもする。




Java は「マルチスレッド」を前提としたプログラム言語なので、スレッド同期の命令がしっかりしている。

UNIX などでもマルチスレッドなプログラムは組めるが、C で組むことになるので注意を払って同期するような処理を自分で加えないといけない。


Java では、命令を「synchronized」というブロックで囲むだけで、他の synchronized ブロックと同時に実行されないことが保証される。


synchronized の中で別の synchronized に動いて欲しい、というときはどうするか?

wait を使う。wait すると、その時点でスレッドは休止し、別のスレッドに処理を明け渡す。


休止してしまったプログラムを起こすにはどうするか?

notify を使う。notify すると、休止している別のスレッドを叩き起こす。



この3つの機能が非常に良く出来ていて、スレッドプログラムは Java の腕の見せ所のひとつだ。




実は、腕の見せ所であるだけに、ここらへんの命令はしっかり意味を理解して使わないとはまりやすい。

以前 i-アプリのプログラムを作った時に、結構はまった。

そして、今日また移植版のプログラムを作っていてはまった(笑)



学習してないなぁ、と思うが、Java なんてめったに使わないんだもん。




同じテーマの日記(最近の一覧)

コンピュータ

別年同日の日記

01年 10/30

04年 追加の打ち合わせ

08年 10月まとめ

13年 ファミコンサポートが終了した日(2007)

14年 男と女とLGBT

15年 ロナルド・グラハム 誕生日(1935)


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -