スレッド関連の代表的メソッド


■初期状態で実行するメソッド
・public void start()
スレッドの開始。初期状態→実行可能状態へ遷移する。デフォルトでは内部でrunメソッドを実行する。


■実行可能状態で実行するメソッド
・public void run()
別スレッドで実行したい内容の本体。startメソッド内で呼ばれたときは別スレッドで実行されるが、直接呼び出した際は同一スレッドで実行される。
Runnableを継承したタスクオブジェクトに定義するのが一般的。
スケジューラーがこのメソッドを実行したときに、実行可能状態→実行中状態に遷移する。


■実行中状態→実行可能状態で実行するメソッド
・public static void yield()
現在実行中のスレッドオブジェクトを一時的に休止させ、ほかのスレッドが実行できるようにします。
ただし、他のスレッドが実行されるかはスケジューラー次第なので、休止したスレッドがすぐに再開される場合もある。
実行中状態→実行可能状態に遷移する。
・public void interrupt()
実行中状態の対象スレッドに対して、実行可能状態への変更を依頼する。
実際に遷移するかはスケジューラー次第。
スレッドのキャンセル処理の実装に使う。
yieldのマイルド版ってとこでしょうか。


■実行中状態→待機状態で実行するメソッド
try-catchおよびthrowsの記述必須。
・public final void join() throws InterruptedException
あるスレッドの終了を待つ。
実行中状態から待機状態に遷移する。
・public final void java.lang.Object.wait() throws InterruptedException
Threadクラスではなく、Objectクラスのメソッド。
実行中状態のスレッドを待機状態に遷移する。
・public static void sleep(long millis) throws InterruptedException
指定時間待機する。
実行中状態から待機状態に遷移する。
指定時間待機後は実行可能状態に遷移し、再開されるタイミングはスケジューラー次第となる。


■待機状態で実行するメソッド
・public final void java.lang.Object.notify()
Threadクラスではなく、Objectクラスのメソッド。
待機状態のどれかひとつのスレッドを実行可能状態に遷移する。
・public final void java.lang.Object notifyAll()
Threadクラスではなく、Objectクラスのメソッド。
待機状態のすべてのスレッドを実行可能状態に遷移する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です