Javaのお勉強その10
- スレッドその1
1つのプログラム中に複数の処理を同時に走らせることをスレッドという。
スレッドの作り方は2種類ある。一つはThreadクラスを拡張してrunメソッドを実装する方法
class myThread extends Thread{ public void run(){ ... }}
myThread mt = new myThread();mt.start();
もう一つはRunnableインタフェースを実装するし、runメソッドを実装する方法である。
class myRunnable implements Runnable{ public void run(){ ... }}
myRunnable mr = new myRunnable();Thread t = new Thread(mr);t.start();
runメソッドを実装して、startメソッドでスレッド(中身はrunメソッド)を開始する。
スレッドには実行中、実行可能、実行不可能、死んでいる(終了状態)の4つの状態がある。
yieldはThreadのstaticメソッドである。これを実行すると、実行中のメソッドは実行権利を放棄する。実行可能状態のスレッドがほかにあれば、スケジューラにより、それを実行することがある。
sleepはThreadの実行を一定時間止める役割を持つ。これもThreadのstaticメソッドである(呼ぶときはThread.sleep(1000)などと記述する)。
joinはThreadの非staticなメソッドで、他のスレッドと同期をとるために、スレッドの終了を待つメソッドである。
JavaのI/Oメソッドは、時間がかかるとスレッドを実行不可能なブロック状態にし、他のスレッドに実行権利を譲る。状況が変化すると、実行可能状態に遷移する。
複数のスレッドを制御する共有オブジェクトをモニターという。スレッドの実行順序は不定なので、あるスレッドがもにーたにアクセスしている間に別のスレッドがそれを書き換えて矛盾が起きる可能性がある。
synchronizedメソッドを利用すると、あるスレッドがメソッドを呼び出している間、他のスレッドはそのメソッドを利用できなくなる。
0 件のコメント:
コメントを投稿