Thread の起動と停止
Thread の起動は start() で行う。但し 1 度しか実行できない。
(run() が終了して再度 start() を実行してもスレッドの run() は呼ばれません)
同じスレッドを再度実行したい場合は new して start() を繰り返す。
また、start() から run() が呼ばれるまでの間隔は VM に依存しており、直ぐに呼ばれるわけではないので、
直ぐに run() が呼ばれる事を期待したソースを書かないように注意すること。
ソース記述例
TestThread th = new TestThread();
th.start();Thread th = new Thread(new Runnable() {
public void run() {
// TODO 処理
}
});
th.start();
実行中の Thread を停止する場合に stop() は基本的に使用禁止。(詳しくは Java 非推奨スレッドプリミティブ を参照)
そこで、別途安全に Thread を停止できるように、 halt() を用意する。
halt() では halt_ を true にして while() を抜けさせる。処理が停止中の事も考えられるので interrupt() もやっておく。
ソース記述例
public class TestThread extends Thread {
private boolean halt_;
public TestThread() {
halt_ = false;
}
public void run() {
while (!halt_) {
// TODO 処理
}
}
public void halt() {
halt_ = true;
interrupt();
}
}
|