Javaマルチスレッド(7章)

3736 ワード

1.スレッドの状態

  • interrupted静的メソッド:現在のスレッド(current thread)が割り込み状態であるかどうかをテストし、実行後にステータスIDを消去しfalseに設定します.
  • isInterruptedインスタンスメソッド:スレッドThreadオブジェクト(this thread)が割り込み状態であるかどうかをテストし、識別状態はクリアされません.
  • 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.スレッドに発生した例外


    スレッドグループのいずれかのスレッドに異常が発生した場合、他のスレッドはスレッド異常処理メカニズムに影響を受けません.まず、独自の異常処理を呼び出し、なければ、スレッドグループの異常処理を呼び出し、デフォルトを呼び出すとします.