KeyboardPianoV1.7.3 線程池


詳細步驟

例行說明

Thread creation and destruction is very expensive

  • 由此引入線程池科學管理線程,又根據音頻播放的併發性以及數量的不確定性,選擇緩存線程池 CacheThreadPool 管理音頻播放

  • 其特點是:線程數沒有限制,線程重用率高,並且有一個超時回收機制,當空閒的線程超過 1 分鐘就會進行回收

代碼分析

總共就兩行代碼,堪稱所有版本之中最簡單的一個,沒有之一

  • KeyboardPiano
    創建一個緩存線程池
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
  • MyButton
    原先直接 new MusicPlayer().start() 就開始跑,現在換成線程池管理
kp.cachedThreadPool.execute(new MusicPlayer(getType(), wavPath));
  • 效果分析
    1. 只要線程池裏有空閒的線程,新任務加進來,直接放到空閒的線程上跑,用完的就在那裏等下一個任務
    2. 如果無可回收線程時,則會根據需要創建新線程運行
    3. 所以使用線程池的好處就是——靈活創建回收線程

相關鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章