JavaのThread

java-thread.png

スレッドの状態

状態 説明 この後使える関数 この状態にするための関数 isAlive()
BLOCKED join() ブロックされ、モニターロックを待機しているスレッドのスレッド状態です。 Exception投げられるとなる,sleep()でもなる
NEW まだ起動されていないスレッドのスレッド状態です。 start()
RUNNABLE 実行可能なスレッドのスレッド状態です。 start()
TERMINATED 終了したスレッドのスレッド状態です。 false
TIMED_WAITING 指定された待機時間、待機中のスレッドのスレッド状態。 Thread.sleep()
WAITING 待機中のスレッドのスレッド状態。 Object.wait()

デーモンスレッド

デーモンスレッドとは、プログラムがスレッドの実行終了を待たないでプログラム終了することができるスレッドのことを デーモンスレッド といいます。
要するにデーモンスレッドが実行中でもプログラムが終了してしまえば、デーモンスレッドは実行されません。

スレッドをデーモンスレッドにするには setDaemon(true) メソッドを実行する必要があります。
+ スレッド関連のException

IllegalThreadStateException

java.lang.IllegalMonitorStateException: object not locked by thread before wait()

wait()を使う前はロックしないといけないらしい。

java.lang.IllegalThreadStateException: Thread already started.

こうすると直る[1]

if (mThread.getState() == Thread.State.NEW)
 {
     mThread.start();
}

Objectクラスが持ってる関数でスレッド関係のもの

notify() スレッドを起こす
wait() 現在のスレッドをwait状態にする
+ Threadクラス
start() スレッドをスタートしてrun()を走らせてRUNNABLE状態にする 
wait() スレッドをWAITNG状態にする notify()によって起こされる
interrupt() スレッドに割り込む。スレッドで何か処理している最中にinterrupt()するとInterruptExceptionになってスレッドはBLOCKEDになる
join() スレッドが終了するまで待機して、終了したらまたrun()させる

java thread

サポートサイト Wikidot.com javathread