摘要:線程使用的是堆外內存空間。也就是說,進程內部會嘗試利用的內核線程去參與實際的調度,而自己使用調用作為中間橋梁與自己的程序進行交互?;谟脩艟€程,的實現(xiàn)是否可以沒有中間這一層映射,自己的線程直接由來調度,或許理論上效率更高。
序
一個線程的啟動是需要通過Thread.start()方法來完成的(也只有start才完成一個線程的真正創(chuàng)建,new Thread不算),這個方法會調用本地方法JNI來實現(xiàn)一個真正意義上的線程,或者說只有start成功調用后由OS分配線程資源,才能叫做線程,而在JVM中分配的Thread對象只是與只對應的外殼。
輕量級進程線程為輕量級進程,多個線程共享一個進程資源,對于OS的許多資源的分配和管理(例如內存)通常都是進程級別的,線程只是OS調度的最小單位,線程相對進程更加輕量一些,它的上下文信息會更少,它的創(chuàng)建與銷毀會更加簡單,線程因為某種原因掛起后不會導致整個進程被掛起,一個進程中又可以分配許多的線程。但是某個線程占用過多資源會導致整個進程宕機。線程使用的是堆外內存空間。
啟動線程start方法怎么啟動線程的:
(1)基于Kernel Thread(KLT)的映射來實現(xiàn)(Java采用此方案)KLT是內核線程,內核線程由OS直接完成調度切換,它相對應用程序的線程來講只是一個接口,外部程序會使用一種輕量級進程(Light Weight Process,LWP)來與KLT進行一對一的接口調用。也就是說,進程內部會嘗試利用OS的內核線程去參與實際的調度,而自己使用API調用作為中間橋梁與自己的程序進行交互。
(2)基于用戶線程(User Thread,UT)的實現(xiàn)是否可以沒有中間這一層映射,自己的線程直接由CPU來調度,或許理論上效率更高。不過這樣實現(xiàn)時,用戶進程需要關注的抽象層次會更低一些,跳過OS更加接近CPU,即自己要去做許多OS要做的事情,自然的OS的調度算法、創(chuàng)建、銷毀、上下文切換、掛起等等都要自己要搞定(CPU只做計算),這樣做顯然很麻煩,有人嘗試了,后來放棄了。
(3)混合實現(xiàn)方式設計理念是既希望保留Kernel線程原有的架構,又想使用用戶線程,輕量級進程依然與Kernel線程一一對應,唯一的變化就是輕量級進程不再與進程直接掛鉤,而是與用戶線程掛鉤,用戶線程不一定必須與輕量級進程一一對應,而是多對多,就像在使用一個輕量級進程列表一樣,增加了一層來解除輕量級進程與原進程之間的耦合。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/65737.html
摘要:內存之間的交互關于主內存和工作內存之間的具體交互協(xié)議,內存模型定義了中操作來完成,虛擬機實現(xiàn)的時候必須保證每個操作都是原子的,不可分割的對于和有例外鎖定作用于主內存變量,代表一個變量是一條線程獨占。 并發(fā)不一定依賴多線程,但是在java里面談論并發(fā),大多與線程脫不開關系。 線程是大多是面試都會問到的問題。我們都知道,線程是比進程更輕量級的調度單位,線程之間可以共享內存。之前面試的時候,...
摘要:線程可以被稱為輕量級進程。一個守護線程是在后臺執(zhí)行并且不會阻止終止的線程。其他的線程狀態(tài)還有,和。上下文切換是多任務操作系統(tǒng)和多線程環(huán)境的基本特征。在的線程中并沒有可供任何對象使用的鎖和同步器。 原文:Java Multi-Threading and Concurrency Interview Questions with Answers 翻譯:并發(fā)編程網(wǎng) - 鄭旭東 校對:方騰飛 多...
摘要:多線程和并發(fā)問題是技術面試中面試官比較喜歡問的問題之一。線程可以被稱為輕量級進程。一個守護線程是在后臺執(zhí)行并且不會阻止終止的線程。其他的線程狀態(tài)還有,和。上下文切換是多任務操作系統(tǒng)和多線程環(huán)境的基本特征。 多線程和并發(fā)問題是 Java 技術面試中面試官比較喜歡問的問題之一。在這里,從面試的角度列出了大部分重要的問題,但是你仍然應該牢固的掌握Java多線程基礎知識來對應日后碰到的問題。(...
摘要:線程的可能實現(xiàn)方式基本上主流的操作系統(tǒng)都支持線程,也提供了線程的實現(xiàn)。使用用戶線程和內核線程混合實現(xiàn)在這種混合實現(xiàn)下,既存在用戶線程,也存在內核線程。 進程與線程 在傳統(tǒng)的操作系統(tǒng)中,最核心的概念是進程,進程是對正在運行的程序的一個抽象。進程的存在讓并行成為了可能,在一個操作系統(tǒng)中,允許運行著多個進程,這些進程看起來是同時在運行的。如果我們的計算機同時運行著 web 瀏覽器、電子郵件客...
摘要:多線程環(huán)境下的一些問題安全性問題在沒有正確同步的情況下,多線程環(huán)境下程序可能得出錯誤的結果。一些相關概念競爭條件多線程的環(huán)境下,程序執(zhí)行的結果取決于線程交替執(zhí)行的方式。而線程的交替操作順序是不可預測的,如此程序執(zhí)行的結果也是不可預測的。 入口 Java多線程的應用復雜性之如jvm有限的幾個內存方面的操作和規(guī)范,就像無數(shù)紛繁復雜的應用邏輯建立在有限的指令集上。 如何寫出線程安全的程序,有...
摘要:下面是線程相關的熱門面試題,你可以用它來好好準備面試。線程安全問題都是由全局變量及靜態(tài)變量引起的。持有自旋鎖的線程在之前應該釋放自旋鎖以便其它線程可以獲得自旋鎖。 最近看到網(wǎng)上流傳著,各種面試經(jīng)驗及面試題,往往都是一大堆技術題目貼上去,而沒有答案。 不管你是新程序員還是老手,你一定在面試中遇到過有關線程的問題。Java語言一個重要的特點就是內置了對并發(fā)的支持,讓Java大受企業(yè)和程序員...
閱讀 3499·2021-09-30 09:47
閱讀 2510·2021-09-10 10:51
閱讀 2084·2021-09-08 09:36
閱讀 3052·2019-08-30 12:56
閱讀 3193·2019-08-30 11:16
閱讀 2751·2019-08-29 16:40
閱讀 3071·2019-08-29 15:25
閱讀 1706·2019-08-29 11:02