131205訓練

投稿者: | 2013年12月5日

スレッドの続き。

sleep

スレッドの動作を待たせる。

スレッド名.sleep(指定ミリ秒);

指定ミリ秒が過ぎると動作を再開する。
割り込みが発生した場合に投げられる例外「InterruptedException」が投げられる可能性があるため、try…catchでくくる必要がある。

synchronized(排他制御)

直訳すると「同期」。
一つのスレッドが実行中の場合は他のスレッドは実行できなくする。

public synchronized void メソッド名(引数) {
    処理
    }

複数スレッドが同一メソッドを行うと矛盾が生じるため、
同時にメソッドを行わないようにつける。

join

スレッドの終了を待つメソッド。

スレッド名.join();

「スレッド名」のスレッドが終わるまで以降の処理は実行されない。
sleepと同様の理由でtryブロックでくくる必要がある。

wait(Objectクラス)

他のスレッドがnotifyを呼び出すまで待機するメソッド。

wait();

notify(Objectクラス)

waitメソッドで待機中のスレッドを再開する。

notify();

waitやnotifyを発行するメソッドにもsynchronizedをつけないといけないらしい。
よく考えたらstartとrunに触れてないっていうね・・・・

参考にしたサイト

スレッドの同期(wait・notify・notifyall)|Javaから楽しく学ぶ!ゲームプログラミング専門学校


コメント

Loading Facebook Comments ...

コメントを残す

No Trackbacks.