從今天起,讓我們一起來學習大數據,每天我會將學習到的知識分享給大家,希望與大家共同成長。今天我們講Java中的多線程,之前的一下Java小知識點,我會在後面的發文中,慢慢補充進來。
認識線程
要了解線程我們得認識進程。進程是系統中正在運行的程序,同時也是我們計算機系統中資源分配和調度的單位,而且每一個進程都有自己獨立的內存空間和系統分配的資源。
那麼什麼是線程,如果說進程是程序的話,線程那就是一條執行的路徑,我們將只有一條執行路徑的一個進程稱之為單線程程序,將有多條執行路徑的一個進程稱為多線程程序。
Java的程序運行原理
我們在運行Java命令是就會啟動Java的虛擬機,也就通過主線程是啟動JVM。當我們啟動了JVM相當於啟動了一個應用程序,也相當於啟動了一個進程。而這個程會自動啟動主線程,然後主線程再去調用某個類的方法,換句話說就是main方法運行在主線程內,之前的所有程序都是單線程的。
有個問題值得深死?jvm虛擬機啟動時多線程的,在主線程開啟之前,垃圾回收線程也已經開啟。
多線程的實現方案
在這裡我們創建新的線程有兩種方法。
幾個小知識點-
- start()方法來啟動線程
- run()來完成其運行操作
- 實現接口就必須重寫run()方法
獲取和設置線程的名稱
線程控制
* sleep(long millis) 讓線程睡眠多少毫秒
* join 加入線程
* yield 線程讓步 但是cpu 的執行不確定
* stop 過期,停止線程
* interrupt 打斷 終止休眠
線程的安全問題
多線程在同步操作時其中的延遲會導致程序的錯誤,好比賣出相同的火車票,也有可能出現0票的情況。
那麼如何解決多線程的安全問題呢?
這裡我們將多個語句操作共享數據的代碼塊給鎖起來,讓任意時刻只能有一個線程執行。
當線程相當多時,因為每個線程都會去判斷同步上的鎖,這是很耗費資源的,無形中會降低程序的運行效率。
我們就開始同步方法來解決代碼塊帶來的問題。同步方法就是將同步關鍵字加在方法上,同步方法的鎖是this
線程等待和喚醒
線程池
程序啟動一個新線程成本是比較高的,因為它涉及到要與操作系統進行交互。而使用線程池可以很好的提高性能,
這就是對Java中多線程的簡單介紹,希望可以幫助到大家,有什麼疑問可以在下方留言哦~
感謝堅持關注的朋友
世界很大,幸好有你
歡迎在評論區留下你的問題或困惑,我將每天與你分享我的觀點和心得。
聚焦最新科技諮訊,探尋未來智能領域,我是女陶。
閱讀更多 女陶愛柚子 的文章