Javaでスレッドメソッドを使用するには?
Javaでは、スレッドを作成して管理するために、Threadクラスのメソッドを使用できます。以下に、よく使用されるThreadメソッドをいくつか示します。
- start()メソッド: スレッドを開始し、スレッドのrun()メソッドを呼び出します。各スレッドはstart()メソッドを一度だけ呼び出すことができます。
- run()メソッド:スレッドの具体的な実行ロジックを定義する。カスタムスレッドクラスでこのメソッドをオーバーライドする必要がある。
- sleep()メソッド:一定時間、カレントスレッドを休止させる。引数に休止したい時間をミリ秒で指定可能。
- join()メソッド: 指定したスレッドの終了を待つ。一つのスレッドが他のスレッドのjoin()メソッドを呼び出すと、呼び出されたスレッドが終了するまでそのスレッドはブロックされる。
- インターセプトメソッド:スレッドを中断する。このメソッドを呼び出すとスレッドの中断ステータスがtrueに設定されるが、スレッドの実行はすぐに停止しない。スレッドのrun()メソッド内でこの中断ステータスを判断し、スレッドの実行を中止するかを決定する必要がある。
- isAlive()メソッド: スレッドが稼働中かどうかを判定する。スレッドがすでに起動していてまだ終了していない場合は true を返す。それ以外の場合は false を返す。
- yield()メソッド:現在実行中のスレッドを停止して、他のスレッドに実行の機会を与える。yield()メソッドは、スレッドの実行権限を放棄するが、依然として実行可能な状態にあり、直後に再度実行される可能性がある。
- setPriority()メソッド: スレッドの優先度を設定します。スレッドの優先度は1~10の範囲で、デフォルトは5です。優先度の高いスレッドはCPUリソースの競合時に高い実行機会を持ちます。
- スレッドの名前を取得および設定する getName() と setName() メソッド。
- currentThread()メソッド:現在実行中のスレッドオブジェクトを取得します。
これらのメソッドはThreadクラスのオブジェクトから呼び出すことができます。たとえば次のようにします。
Thread t1 = new Thread();
t1.start();
Thread.sleep(1000);
Thread t2 = new Thread();
t2.join();
if (Thread.currentThread().isInterrupted()) {
// 处理中断逻辑
}