一起來學大數據|初步瞭解Java中多線程

一起來學大數據|初步瞭解Java中多線程

從今天起,讓我們一起來學習大數據,每天我會將學習到的知識分享給大家,希望與大家共同成長。今天我們講Java中的多線程,之前的一下Java小知識點,我會在後面的發文中,慢慢補充進來。

認識線程

要了解線程我們得認識進程。進程是系統中正在運行的程序,同時也是我們計算機系統中資源分配和調度的單位,而且每一個進程都有自己獨立的內存空間和系統分配的資源。

那麼什麼是線程,如果說進程是程序的話,線程那就是一條執行的路徑,我們將只有一條執行路徑的一個進程稱之為單線程程序,將有多條執行路徑的一個進程稱為多線程程序。

一起來學大數據|初步瞭解Java中多線程

Java的程序運行原理

我們在運行Java命令是就會啟動Java的虛擬機,也就通過主線程是啟動JVM。當我們啟動了JVM相當於啟動了一個應用程序,也相當於啟動了一個進程。而這個程會自動啟動主線程,然後主線程再去調用某個類的方法,換句話說就是main方法運行在主線程內,之前的所有程序都是單線程的。

有個問題值得深死?jvm虛擬機啟動時多線程的,在主線程開啟之前,垃圾回收線程也已經開啟。

多線程的實現方案

在這裡我們創建新的線程有兩種方法。

一起來學大數據|初步瞭解Java中多線程

方法1(不推薦使用)

一起來學大數據|初步瞭解Java中多線程

方法2

幾個小知識點-

  • start()方法來啟動線程
  • run()來完成其運行操作
  • 實現接口就必須重寫run()方法

獲取和設置線程的名稱

一起來學大數據|初步瞭解Java中多線程

獲取和設置線程的名稱

線程控制

* sleep(long millis) 讓線程睡眠多少毫秒

* join 加入線程

* yield 線程讓步 但是cpu 的執行不確定

* stop 過期,停止線程

* interrupt 打斷 終止休眠

一起來學大數據|初步瞭解Java中多線程

線程的生命週期圖

線程的安全問題

多線程在同步操作時其中的延遲會導致程序的錯誤,好比賣出相同的火車票,也有可能出現0票的情況。

那麼如何解決多線程的安全問題呢?

這裡我們將多個語句操作共享數據的代碼塊給鎖起來,讓任意時刻只能有一個線程執行。

一起來學大數據|初步瞭解Java中多線程

同步代碼塊

當線程相當多時,因為每個線程都會去判斷同步上的鎖,這是很耗費資源的,無形中會降低程序的運行效率。

我們就開始同步方法來解決代碼塊帶來的問題。同步方法就是將同步關鍵字加在方法上,同步方法的鎖是this

線程等待和喚醒

一起來學大數據|初步瞭解Java中多線程

線程池

程序啟動一個新線程成本是比較高的,因為它涉及到要與操作系統進行交互。而使用線程池可以很好的提高性能,

一起來學大數據|初步瞭解Java中多線程

一起來學大數據|初步瞭解Java中多線程

這就是對Java中多線程的簡單介紹,希望可以幫助到大家,有什麼疑問可以在下方留言哦~

感謝堅持關注的朋友

一起來學大數據|初步瞭解Java中多線程

世界很大,幸好有你

歡迎在評論區留下你的問題或困惑,我將每天與你分享我的觀點和心得。

聚焦最新科技諮訊,探尋未來智能領域,我是女陶。


分享到:


相關文章: