Javaマルチスレッド(7章)
3736 ワード
1.スレッドの状態
1. BLOCKED
Thread state for a thread blocked waiting for a monitor lock.
2. NEW
Thread state for a thread which has not yet started.
3. RUNNABLE
Thread state for a runnable thread.
4. TERMINATED
Thread state for a terminated thread.
5. TIMED_WAITING
Thread state for a waiting thread with a specified waiting time.
6. WAITING
Thread state for a waiting thread.
public class TestThread {
public static void main(String[] args) throws InterruptedException {
MyThread thread1 = new MyThread();
thread1.setName("thread1");
System.out.println("thread1 :" + thread1.getState());
thread1.start();
System.out.println("thread1 :" + thread1.getState());
Thread.sleep(1000);
System.out.println("thread1 :" + thread1.getState());
}
}
class MyThread extends Thread {
public MyThread() {
System.out.println(" MyThread :" + Thread.currentThread().getName());
}
@Override
public void run() {
System.out.println(" :" + Thread.currentThread().getName() + " :"
+ Thread.currentThread().getState());
}
}
2.スレッドグループ
スレッドをあるスレッドグループにまとめることができ、スレッドグループにはスレッドオブジェクトがあってもよいし、スレッドグループがあってもよい.このような構造はツリーの形式に似ている.mainメソッドを実行するスレッド名は:mainで、その属するスレッドグループのグループ名も:mainです.スレッドまたはスレッドグループは、現在のスレッドグループに自動的に帰属します.スレッドグループがinterruptメソッドを呼び出すと、このスレッドグループのスレッドは停止します.
3.SimpleDateFormat非スレッドセキュリティ
ソリューション:1)毎回新しいインスタンスを作成する2)ThreadLocal
4.スレッドに発生した例外
スレッドグループのいずれかのスレッドに異常が発生した場合、他のスレッドはスレッド異常処理メカニズムに影響を受けません.まず、独自の異常処理を呼び出し、なければ、スレッドグループの異常処理を呼び出し、デフォルトを呼び出すとします.