Javaスレッド状態の概要
2769 ワード
Javaスレッドの状態は、NEW状態、RUNNALE状態、RUNNIG状態、WAITING状態、TIMED_です。WAITING状態、BLOCKING状態、TEMINA LED状態。
1.NEW状態。新しいスレッドを作成すると、スレッドはNEW状態になり、スレッドの最初の状態となります。
2. RUNABLE状態。はスレッドの実行可能状態であり、このスレッドが準備運転中であることを示し、start方法を実行するとスレッドはこの状態に入ります。
4. WAITING状態です。スレッド待ち状態は、同期所を取得し、キーワードsynchronizeを使用する必要があります。同期コードブロック内でwait()を実行し、スレッドを起動するまでWAITING状態にします。
5.TIMED_WAITING状態です。またはwait(long)方法は、アクティブになるまでWAITING状態とTIMED_にあります。WAITING状態です。notifyまたはnotifyAllを実行するとスレッドがアクティブになります。
6.BLOCKED状態。スレッドが詰まっている状態で、スレッドが待っていると渋滞状態になります。実はスレッドがwai()wait(long)sleep(long)を実行するとBLOCKED状態になります。
7. TERMNA LED状態です。スレッドが実行されると、スレッドはTEMINA状態になり、終了状態になります。
1.NEW状態。新しいスレッドを作成すると、スレッドはNEW状態になり、スレッドの最初の状態となります。
public class ThreadDemo {
public static void main(String[] args) {
Thread t = new Thread();// 。
System.out.println(" t : "+ t.getState().toString());
}
}
:
t : NEW
2. RUNABLE状態。はスレッドの実行可能状態であり、このスレッドが準備運転中であることを示し、start方法を実行するとスレッドはこの状態に入ります。
public class ThreadDemo {
public static void main(String[] args) {
Thread t = new Thread();// 。
System.out.println(" t : "+ t.getState().toString());
t.start();
System.out.println(" t : "+ t.getState().toString());
}
}
:
t : NEW
t : RUNNABLE
3.RUNNING状態。スレッドが動作中の状態を示し、CPUがこのスレッドを実行すると、このスレッド状態をRUNNING状態に変更します。この状態は方法では入手できません。4. WAITING状態です。スレッド待ち状態は、同期所を取得し、キーワードsynchronizeを使用する必要があります。同期コードブロック内でwait()を実行し、スレッドを起動するまでWAITING状態にします。
5.TIMED_WAITING状態です。またはwait(long)方法は、アクティブになるまでWAITING状態とTIMED_にあります。WAITING状態です。notifyまたはnotifyAllを実行するとスレッドがアクティブになります。
6.BLOCKED状態。スレッドが詰まっている状態で、スレッドが待っていると渋滞状態になります。実はスレッドがwai()wait(long)sleep(long)を実行するとBLOCKED状態になります。
7. TERMNA LED状態です。スレッドが実行されると、スレッドはTEMINA状態になり、終了状態になります。
public class ThreadDemo implements Runnable {
public static Object object = new Object();
public static void main(String[] args) throws Exception {
Thread t = new Thread(new ThreadDemo());// 。
System.out.println("1 t : " + t.getState().toString());
t.start();// start , RUNNABLE 。
System.out.println("2 t : " + t.getState().toString());
Thread.sleep(1000);// sleep main , t 。
System.out.println("4 t : " + t.getState().toString());
synchronized (object) {
object.notify();
}
System.out.println("5 t : " + t.getState().toString());
Thread.sleep(1000);
System.out.println("7 t : " + t.getState().toString());
}
@Override
public void run() {
System.out.println("3 t : " + Thread.currentThread().getState().toString());
//
// try {
// Thread.sleep(1000);// t
// } catch (InterruptedException e) {
//
// e.printStackTrace();
// }
synchronized (object) {
try {
object.wait();// , 。
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("6 t : " + Thread.currentThread().getState().toString());
}
}
1 t : NEW
2 t : RUNNABLE
3 t : RUNNABLE
4 t : WAITING
5 t : BLOCKED
6 t : RUNNABLE
7 t : TERMINATED