Java高并发和多线程系列 - 1. 线程基本概念
1. 什么是線程? 線程和進程的區別
在了解線程的概念前,我們應該先知道什么是進程?
進程是操作系統的基本概念之一, 它是正在執行的程序實例。
* 下面的一些進程的基本概念你可以了解下?
--------------------------------------------------------------------
操作系統邏輯上將一個進程分為以下幾部分(段):
# 文本
? 程序的指令
# 數據
? 程序使用的靜態變量
# 堆
? 程序可從該區域動態分配額外內存
# 棧
? 隨函數調用和返回而增減的一片內存, 用于為局部變量和函數調用鏈接信息分配存儲空間
--------------------------------------------------------------------
那么,什么是線程呢?
線程是程序執行的最小單位。
我們可以把線程看做是輕量級的進程。
使用多線程而不是多進程去進行并發程序的設計,是因為線程間的切換和調度成本要遠遠小于進程。
?
2. 線程的生命周期和各個狀態
NEW(新生)
線程剛被新建好之后,進入?NEW(新生)狀態
這個時候線程還沒開始執行
?
RUNNABLE(運行)
當線程的start()方法調用時, 才表示線程開始執行。
?
BLOCKED(阻塞)
如果線程在執行的過程中遇到了synchronized同步塊, 就會進入
BLOCKED(阻塞)狀態, 這時線程會暫停執行,知道獲得請求的鎖。
?
WAITING / TIMED_WAITING
這兩個狀態都是線程進入等待狀態
區別是:?WAITING(無時間限制) / TIMED_WAITING(有時間限制)
wait()方法會讓線程進入等待隊列
notify()方法會在等待隊列中將線程喚醒
join()方法讓線程進入等待隊列,等目標線程終止
?
TERMINATED(終止)
當線程執行完畢后,則進入TERMINATED(終止)狀態
?
總結
以上是生活随笔為你收集整理的Java高并发和多线程系列 - 1. 线程基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 咏南新CS三层开发框架
- 下一篇: 《谷歌和亚马逊如何做产品》