關於多線程你不知道的事

引言:

  世間萬物均可以同時完成不少工做,例如,人體能夠同時進行呼吸,呼吸的同時你也能夠同時排放有毒氣體,你甚至能夠去思考如何上廁所才能不崩出水花,html

得到10分的好成績。你的電腦能夠同時聽歌、玩聯盟,或者刷網課。這種思想放在Java中稱之爲「併發」,咱們將併發完成的每一件事情稱之爲線程。java

 

 (15204493106)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!面試

進入正題!

  在Java語言中,併發機制十分的重要,我的以爲淘寶的秒殺系統就是一個很是牛皮的案例,感興趣的小夥伴能夠去看一下個人這個博客。windows

http://www.javashuo.com/article/p-vccrxtbe-nw.html。裏面有對於高併發十分詳細的簡介。多線程

  •   以及有的時候面試官可能會問你,假如一個線程池的線程突然異常了這個線程池會怎樣處理這個線程?
  •        瞭解JDK的 Executors 線程池嗎?
  •        阿里巴巴的開發手冊上爲啥不容許線程池的默認實現?

這些問題小夥伴能夠看看這篇文章來作更深度的剖析!併發

文檔:有的線程它死了,因而它變成一道面試題...高併發

  連接:http://note.youdao.com/noteshare?id=a9d56ebb337fa5d40f1716b0ee2dcbd8&sub=BF364D61BCD046BF976F49CFFECD4DC4操作系統

  多線程的機制十分的複雜,舉個恰當的例子,好比你同時閱讀三本書,首先閱讀第一本書的第一張,而後閱讀第二本書的第一張,再閱讀第三本書的第一張。回過線程

頭來你在閱讀第一本書的第二張。。。。。。以此類推,就體現出了多線程的複雜性。htm

線程在操做系統中是如何工做的呢?

  Java多線程在不一樣的操做系統中也存在着差別,例如個人電腦使win10系統,windows系統是多任務操做系統,它是以進程爲單位。一個進程是一個包含自身地址的程序

,每一個獨立執行的程序都稱之爲進程也就是正在執行的程序。系統能夠分配給每個進程一段有限的使用CPU時間(專業點叫作:CPU時間片),CPU在這段時間中執行某

個進程,而後又在下一個時間片跳到另外一個進程中去執行。因爲CPU轉換的較快,因此給了咱們一個進程是同時進行的假象!!!

 

下面,我用一個圖更直觀的代表Windows系統的執行模式:

 

 

 

 

 

 一個線程就是進程中的執行流程,一個進程中能夠包含多個線程。每個線程也能夠獲得一小段的執行時間。這樣一個進程就能夠具備多個併發執行的線程啦!!

實現線程的兩種方式?

  Java主要提供了兩種方式實現線程

  • 繼承java.lang.Thread類
  • 實現 java.lang.Runnable接口

 

線程的生命週期?

  線程的生命週期有七種狀態:

  • 出生狀態
  • 就緒狀態
  • 運行狀態
  • 等待狀態
  • 休眠狀態
  • 阻塞狀態
  • 死亡狀態

我用一個圖更直觀的將他表述出來:

 

 好啦今天就到這裏啦!!!!

給你們看看我家的芝麻和黃妞!!!!

可愛嗎???

相關文章
相關標籤/搜索