線程基礎的一些理解(一)(java),線程基礎理解java
一、多線程的基本概念
線程是指進程中的一個執行情境,也就是執行流程,所以我們首先要聊一聊進程,以及進程和線程的關係
1、什麼是進程?
一個進程對應一個應用程式,就像我們在windows系統中啟動Word就表示啟動了一個進程,在java的開發環境下啟動JVM,就表示啟動了一個進程。現代的電腦都是支援多進程的,在同一個作業系統中可以同時啟動多個進程。那什麼又是多進程呢?
2、什麼是多進程,多進程有什麼作用?
單進程電腦只能做一件事情,就像很久以前的電腦,只能開啟一個Dos視窗,這就是單進程的。
而你平時一邊打著lol(lol進程),一邊聽著音樂(音樂進程),這就是多進程的。那麼問題來了,對於單核電腦來講,在同一個時間點上,遊戲進程和音樂進程是同時在運行嗎?
不是。(多核的電腦可以同時運行,所以處理速度高),因為電腦的CPU只能在某個時間點上做一件事,由於電腦可以在“遊戲進程”和“音樂進程”之間頻繁的切換執行,切換速度極高,人類感覺遊戲和音樂在同時進行。生活中有很多這樣的例子,以前的小人書,通過快速的翻頁,人就動了起來,電影一幀一幀播放,畫面就動了,人類感覺是同時進行,其實是通過CPU快速的切換,是人感覺是這樣的。所以多進程的作用不是提高執行速度,而是提高CPU的使用率,以前一個CPU只能做一件事,現在通過不同進程之間的切換就可以實現幹多個事情。
3、什麼是線程,與進程的聯絡?
線程是一個進程中的執行情境。一個進程可以啟動多個線程。可以理解為一個進程可以包含多個線程。
4、多線程有什麼作用?
同樣,多線程與多進程的作用是一樣的,並不是為了提高執行速度,而是提高應用程式的使用率,就像有三個人同時訪問百度伺服器(輸入百度網址),伺服器端的程式就是一個
進程,如果他是單線程的那我訪問的時候,你就不能訪問百度伺服器,如果我們每個人都佔用一個線程,伺服器在我們之間頻繁的切換,給我們一種錯覺感覺多個線程在同時並發執行,就
可以實現很多人同時訪問百度網站。線程和線程共用“堆記憶體和方法區記憶體”,棧記憶體是獨立的,一個線程一個棧。
5.java程式的運行原理?
java命令會啟動java虛擬機器,啟動JVM,等於啟動了一個應用程式,表示啟動了一個進程。該進程會自動啟動一個“主線程”,然後主線程去調用某個類的main方法,所以
main方法運行在主線程中。
二、java中是如何?多線程的
1、在java語言中實現多線程的第一種方式:
(1)繼承java.lang.Thread
(2) 重寫run方法。
三個知識點:
如何定義線程? 繼承Thread類
如何建立線程? new 子類調用
如何啟動線程? .start()方法
2、在java語言中實現多線程的第二種方式:
(1)寫一個類實現java.lang.Runnable介面
(2) 實現run方法
三、線程的生命週期