[Javaベース]Javaのinterruptとsleepが何をしたか推測する


先日、スレッドブロック、目覚まし、クロック中断の知識を学び、主にlinuxカーネル書籍から入手しました(資料はHttpClientテクノロジーベースのタイムアウトとkeepalive.zip).今日はJavaのinterruptとsleepが何をしたのか推測すべきだと思います.
 
 
 
interrupt():
(1)スレッドの割り込み状態をtrueに設定する.
 
this.interrupted = true; //  
 
(2)スレッドがちょうどブロック状態にある場合、それを起動する.
 
if(          , thread->state == TASK_INTERRUPTIBLE ){
         thread->state == TASK_RUNNING;//   
         reschedule_Idle();
}

 
--------------------------------------------------------------------------------------------------------------------------------- 
 
sleep(timeout):
(1)スレッドの割り込み状態をまずチェックし,trueであればInterruptedExceptionをそのまま投げ出す.
if(this.interrupted == true){ //  
        this.interrupted == false;
        throw new InterruptedException();
};

 
(2)クロック割込み処理プログラム:timeout時間設定後、タイマがクロック割込みを発行し、CPUがクロック割込み処理プログラムを実行する.
 
          :
      currentThread->state == TASK_RUNNING;              
      reschedule_Idle();
 
(3)自分を掛ける.
 
     thread->state == TASK_INTERRUPTIBLE;     
     schedule();
 
(4)目が覚めた…様子を見てみる:
      時計に呼び覚まされた場合、戻ります.
      割り込みプログラムではなくクロックで起動しない場合は、割り込み状態をfalseに設定し、InterruptedExceptionを放出します.
 
if(this.interrupted == true){ //(  )      ,                  
       this.interrupted == false;
       throw new InterruptedException();
};
//  ,    timeout ,            ,   ,    

 
 
 
 
添付資料:HttpClientテクノロジーベースのタイムアウトとkeepalive.zip