多線程的一些筆記

  • 實現多線程的幾種方式:

    • 實現Runnable接口
    • 繼承Thread類
    • 實現Callable接口,通過ExecutorService通過任務形式實現。
  • 關於線程同步的Lock和sychronized:

    • Lock比synchronized功能更強大,有能夠實現讀寫分離的讀鎖、寫鎖,有解決死鎖問題的自旋鎖等。
    • Lock所屬爲代碼級別,sychronized屬jvm控制級別。
    • Lock可爲公平鎖(默認非公平),即按等待的時間長短獲取(並不一定),synchronized爲非分平鎖,看jvm心情。
    • Lock使用時注意釋放鎖。
  • Runnable,Callable

    • Callable方法可拋出異常,可有返回值。
    • Callable需轉爲FutureTask(實現了Runable接口)方可傳入Thread類。
  • 計數器CountDownLatch

    主要方法爲其構造方法CountDownLatch(int threadCount)、阻塞當前線程直到計數爲0方法await()、計數衰減方法countDown().

  • 關卡CyclicBarrier

    用於在沒有線程通信的情況下,解決兩個線程彙集在同一原點的問題。

    主要方法有:

    構造方法:CyclicBarrier(int count,Runnable down),count爲關卡綁定的線程數目,down爲彙集到一起後的操作。
    阻塞方法:await()方法,阻塞當前線程直到所有線程彙集於一點。

  • Executors的一些方法介紹

    • newSingleThreadExecutor:單任務執行器
    • newFixedThreadPool:創建一個固定數目的線程池
    • newCachedThreadPool:創建一個不限制線程數目的線程池,不能超過int最大值
    • newScheduledThreadPool:創建一個可支持計劃作業的線程池。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章