回覆列表
  • 1 # 淺析架構

    1.回答下你的問題,繼承Thread類並呼叫start方法就可以實現多執行緒了。

    其實Java中實現多執行緒的方式有三種方式繼承 Thread類,實現Runnable介面、實現Callable介面。

    前兩種沒有返回值,後一種帶返回值。說到多執行緒就把執行緒相關的都說下。

    2、什麼是執行緒

    程序是指一個記憶體中執行的應用程式,每個程序都有自己獨立的一塊記憶體空間,而多個執行緒共享程序申請的記憶體。

    一個程序中可以啟動多個執行緒。比如java執行一個程式就會啟動一個程序,程序至少會啟動main執行緒和垃圾回收執行緒。

    執行緒總是屬於某個程序,與程序內的其他執行緒一起共享分配給該程序的所有資源,但是執行緒有自己獨立的棧。

    Java的執行緒又分為普通執行緒和守護執行緒,像垃圾回收執行緒就是守護執行緒。

    3、執行緒的狀態

    new:執行緒物件已經建立,還沒有呼叫start方法;

    runnable start0方法呼叫時,執行緒進入該狀態。 wait/block/sleep/running也會轉到該狀態;

    running runnable的執行緒執行就會進入該狀態

    休眠狀態:包括wait/blocksleep,執行緒因為某個條件不再執行了,但是等待某個件事件出現,可能返回到 runnable狀態

    dead:異常或者run方法執行完成達到的狀態

    4、執行緒同步

    既然是多執行緒,就要注意執行緒安全問題。

    解決執行緒安全問題,就需要加鎖。Java提供了 synchronized和lock來實現執行緒同步的問題(Lock的實現這裡就不說了,後面可以分享下)。

    5、執行緒通訊

    Object的wait/notify方法,Condition的await和signal方法, BlockingQueue的實現類,

    concurrent包下面的Semaphore、 CyclicBarrier CountDownLatch都可以實現執行緒通訊,這裡就不詳解了

    6、執行緒池

    執行緒池可以參考我分享的關於 ThreadPoolExecutor的文章

    7、其他

    ThreadLocal volatile這兩個東西也是執行緒使用經常需要的,大家可以瞭解下

  • 2 # 程式設計師Dong哥的雜貨鋪

    Java中透過Thread實現多執行緒有兩種方式:

    第一種是建立Thread的子類並覆蓋它的run()方法;

    第二種是實現Runnable(java.lang.Runnable)介面,並將它傳給Thread類的建構函式。

    1. Thread子類實現方式:

    您也可以使用匿名子類的方式實現:

    2. 實現Runnable介面的方式:

    這裡有3種方式:

    1)Java類實現Runnable

    2)匿名實現Runnable

    3)Lambda表示式實現Runnable

  • 中秋節和大豐收的關聯?
  • 怎樣進行蛋雞養殖的日常管理?