線程復習

在討論線程之前我們先來了解一下操作系統的多任務.什么是所任務呢,多任務一般指在同一時刻似乎擁有多個程序同時運行的能力.多任務是原理是什么呢,在單處理器的情況下,多任務是指操作系統將CPU時間劃分成小的片段,并將其分配給不同的程序.從而造成一種并行處理的感覺.

實現多任務有兩種方法.這兩種方法的區別在于操作系統在中斷程序是的行為,---直接中斷以及"事先和被中斷程序協商,只有在被中斷程序同意交出控制權之后才執行中斷".前者即所謂的搶占式多任務后者即協作式多任務.在早期的操作系統和一些簡易設備上的操作系統中是協作式多任務..搶占式多任務更加有效,但是代價是實現起來比較困難.

那么多線程和多任務有什么關系呢?其實沒什么關系,只是多線程在更低的層次中引入了多任務的概念.:單個的進程可以同時處理多個任務,通常將每個任務成為一個線程.可以一次運行多個線程的程序被稱為是多線程的.

那么多線程和多進程有什么區別呢?本質的區別在于每個進程都擁有自己的變量的完備集.線程則共享相同的數據.多線程的優勢就在于:由于共享變量的存在線程之間的通信更加有效簡單.而且對于某些操作系統而言,線程比進程更"輕量級"創建和銷毀一個單個線程比發起進程的開銷要小得多了哦.

好了介紹就先寫到這吧.一下真正開始介紹線程的相關知識.

首先介紹幾個方法:

1,java.lang.Thread 1.0

Static  void  sleep(Long millis)   休眠制定的毫秒數.

2,Thread(Runnable target)

構造一個新的線程,調用指定的targetrun方法.

3,void start();

啟動這個線程,將引發調用run()方法.這個方法立即返回,并且新線程將并發運行.

4,void run()

調用關聯runnablerun方法.你要做的工作是重載這個方法,并且在這個方法中為你想要執行的任務提供相關的處理代碼.

下面將討論中斷線程的方法,以及他們的利弊

線程在他的run方法返回時終止,JDK1.0的時候存在一個stop方法.其他線程可以調用他來終止當前線程.但是這個方法已經被廢棄了.也就是說現在已經沒有了強制終止線程的方法.但是你可以用interrupt方法來請求終止一個線程.

interrupt方法在一個線程上被調用的時候,該線程的  中斷狀態  會被置位,中斷狀態是一個布爾類型的標志.存在于每一個線程中.每一個線程都應該不時地檢查這個標志.以判斷線程是否被中斷.位了查明中斷狀態是否被置位置了,需要首先調用靜態的Thread.currentThread方法來取得當前線程,然后調用他的isInterrupted方法.盡管如此,如果一個線程被阻塞了.它就無法檢查中斷狀態了,這就是產生InterruptException異常的地方.當在一個阻塞的線程上調用interrupt方法時,阻塞調用就會被interruptException異常終止.當前,沒有任何語言要求一個被中斷的程序終止,中斷程序只能引起該線程的注意,被中斷程序可以決定如何對應中斷,某些線程非常重要,以至于他們應該不理會中斷,而是在處理完跑出的異常之后繼續執行.但是更普遍的情況是,一個線程將把中斷看作是一個終止請求,這種線程的run方法.遵循如下的形式.

線程的狀態

New   當你用new創建符創建一個線程時;線程還沒有運行,此時線程處在新生狀態,當一個線程處于新生狀態時,線程中沒有運行線程的代碼,在線程可以運行之前,還有一些筆記工作要做.

Runnable:調用了start()方法.該線程成為了可運行狀態了.一個線程在可運行狀態時線程可能在運行,也可能沒有.這取決于操作系統位該線程提供的運行時間,

Blocked:當線程遇到以下情況是,可能進入多阻塞狀態.(lue)

Dead:run方法正常退出并且自然死亡.或者是一個未捕獲的異常終止了run方法而時線程猝死.

,今天就寫到這里吧,明天總結線程的屬性.

 本文由用戶 梁援—晉 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!