Java面試題-多線程

來源:互聯網
上載者:User

標籤:

1. java中有幾種方法可以實現一個線程?

多線程有兩種實現方法,分別是繼承Thread類與實現Runnable介面。

這兩種方法的區別是,如果你的類已經繼承了其它的類,那麼你只能選擇實現Runnable介面了,因為Java只允許單繼承的。

2. 如何停止一個正在啟動並執行線程?

(1)方法1: 調用Thread.stop()方法停止線程。

Thread.stop()不安全,已不再建議使用。

該方法天生是不安全的。使用thread.stop()停止一個線程,導致釋放(解鎖)所有該線程已經鎖定的監視器(因沿堆棧向上傳播的未檢查異常ThreadDeath而解鎖)。如果之前受這些監視器保護的任何對象處於不一致狀態,則不一致狀態的對象(受損對象)將對其他線程可見,這可能導致任意的行為。

(2)方法2: Thread.interrupt()

  • 傳遞InterruptedException。這是最明智的策略,將異常傳遞給方法的調用者。
  • 恢複中斷。在不能上拋的情況下,如Runnable方法,必須捕獲InterruptedException,並通過當前線程的interrupt()方法恢複中斷狀態,這樣在調用棧中更高層的代碼將看到引發了一個中斷。

(3)方法3:停止一個線程最佳實務是 中斷 + 條件變數。

中斷只是一種協作機制,需要被中斷的線程自己處理中斷。

停止一個線程最好的做法就是利用共用的條件變數。

3. notify()和notifyAll()有什麼區別?

void notify(): 喚醒一個正在等待該對象的線程。
void notifyAll(): 喚醒所有正在等待該對象的線程。

4. sleep()和 wait()有什麼區別?

sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時後會自動回復。調用sleep不會釋放對象鎖。

wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)後本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。

5. 什麼是Daemon線程?它有什麼意義?

所謂後台(daemon)線程,是指在程式啟動並執行時候在後台提供一種泛型服務的線程,並且這個線程並不屬於程式中不可或缺的部分。因此,當所有的非後台線程介紹時,程式也就終止了,同時會殺死進程中的所有後台線程。反過來說,只要有任何非後台線程還在運行,程式就不會終止。必須線上程啟動之前調用setDaemon()方法,才能把它設定為後台線程。注意:後台進程在不執行finally子句的情況下就會終止其run()方法。

6. java如何?多線程之間的通訊和協作?

Java提供了3個非常重要的方法來巧妙地解決線程間的通訊問題。這3個方法分別是:wait()、notify()和notifyAll()。它們都是Object類的最終方法,因此每一個類都預設擁有它們。雖然所有的類都預設擁有這3個方法,但是只有在synchronized關鍵字作用的範圍內,並且是同一個同步問題中搭配使用這3個方法時才有實際的意義。這些方法在Object類中聲明的文法格式如下所示:

final void wait() throws InterruptedExceptionfinal void notify()final void notifyAll()

  

Java面試題-多線程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.