Java多線程筆記

來源:互聯網
上載者:User

標籤:輸入   靈活   read   操作   導致   隊列   資源   多資源   --   

1.並發通常可以提高單一處理器上程式的效能

  其實,在單一處理器上並發的執行程式鎖用的開銷大於順序執行。然而順序執行時,程式有時會因為某些條件(通常是I/O問題)導致不能繼續執行,稱為線程阻塞,如果沒有並發,程式將停止不前。而使用了並發,一個任務阻塞,其他任務還可以繼續執行,這就保證了程式的完成。所以,如果確定沒有任務會出現阻塞,在單一處理器上並發執行程式是不必要的。

2.並發在單一處理器上效能提高最常見的執行個體是--事件驅動的編程

  並發最迷人的額就是可以產生可響應的使用者介面,比如某個程式將長期的運行某個操作,但是又要隨時處理使用者的輸入,如果在這個長期任務的每一段都加入一個處理使用者輸入的程式,那是十分不明智的,而建立單獨的線程來處理使用者輸入就是非常棒的實現

3.作業系統會隔離進程,但Java卻不行,所以,Java多線程最困難的就是協調多個線程對同一塊資源的訪問,確保資源不會同時被多個線程訪問。

4.四中線程池的區別(newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor )

  new Thread()建立線程這種方式有很多弊端:a.每次new Thread建立對象效能差。b.線程缺乏統一管理,可能無限制建立線程,相互之間競爭,佔用過多資源導致死機。c.缺乏更多功能,如定時執行,定期執行,線程中斷。

  newCachedThreadPool:建立一個可快取的線程池,如果線程長度超過處理需要,可靈活的回收空閑線程,若沒有可回收的就建立線程(首選)

  newFixedThreadPool:定長線程池,可控制線程的最大並發數,超出的線程按隊列等候

  newScheduledThreadPool:定時線程池,支援定時及週期性任務執行

  newSingleThreadExecutor :單一線程池,只會用唯一的線程來執行工作,所有任務按照FIFO來執行

 

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.