聲明:本系列大可能是翻譯自https://www.javatpoint.com,加上本身的增刪改,盡力寫的系統而通俗易懂,後文再也不重複聲明。html
點我跳過黑哥的卑鄙廣告行爲,進入正文。java
Java多線程系列更新中~編程
正式篇:多線程
- Java多線程(一) 什麼是線程
- Java多線程(二)關於多線程的CPU密集型和IO密集型這件事
- Java多線程(三)如何建立線程
- Java多線程(四)java中的Sleep方法
- Java多線程(五)線程的生命週期
番外篇(神TM番外篇):函數
- Java 過一下基礎
- 轉載:java中Thread.sleep()函數使用
- Java多線程 Socket使用
Java的多線程是一個同時執行多個線程的過程。spa
線程是一個輕量級的子進程,是最小的處理單元。多線程和多進程都用於實現多任務處理。線程
可是,咱們使用多線程而不是多進程,由於線程使用共享內存區域,它們不分配單獨的內存區域以節省內存,並且線程之間上下文切換比進程花費的時間更少。翻譯
用一個東西以前,總得了解一下它的優勢,這樣纔有動力看下去,這裏咱們先看一下多線程的優勢。htm
Java多線程的優勢
- 它不會阻塞用戶,由於線程是獨立的,你能夠同時執行多個操做,舉個栗子,你須要一個延時,等待三秒鐘再進行接下來的操做,若是你使用單線程,它就真的等了你三秒,這三秒,啥都不幹,啥都得放一邊,就等。。。這明顯是不可接受的。
- 你能夠同時執行多個操做,節省時間。這裏面又牽扯到CPU密集型和IO密集型的問題,能夠看這篇文章:關於多線程的CPU密集型和IO密集型這件事
- 線程是獨立的,死掉一個,不影響另外一個。
多任務處理
多任務處理是同時執行多個任務的過程,咱們使用多任務處理來儘量增大CPU的利用率。多任務處理能夠經過兩種方式實現,沒錯,多線程和多進程。blog
1.多進程
- 每一個進程在內存中有一個地址,分配一個單獨的內存區域
- 進程是重量級的
- 通訊成本比較高
- 切換進程須要一些時間來保存和加載寄存器,內存映射等
2.多線程
什麼是JAVA中的線程
線程是一個輕量級的子進程,是最小的處理單元。以下圖:
![](http://static.javashuo.com/static/loading.gif)
一個系統下能夠有多個進程,一個進程中又有多個線程。
JAVA Thread類
Java提供了Thread類來實現線程編程,至於怎麼作,且看下文。