[英]Java Thread: start() - How does it create a new thread?
我想知道java線程啟動方法內部能夠創建新線程的內容是什么?
它是一種本機方法,這意味着它不是用Java本身實現的,而是用C ++實現的。
在JVM簿記之外,它的確如何做,取決於JVM運行的平台; 在Linux上,它會運行像pthread_create()
,或者直接運行clone()
。 我不知道Windows的替代品是什么。
Java隱藏了你的底層機制有兩個主要原因:部分是為了讓你更容易編寫Java程序,而不必知道他們將運行的操作系統,作為抽象和服務給你; 但部分原因還在於能夠直接調用這些本機功能會破壞Java所強加的安全模型,因此在沒有顯式權限的情況下,確保沒有Java程序可以做任何事情。
最后,我不確定你問的確切原因,所以我不確定我是否真的在回答你的問題。
與Java中的任何其他內容非常相似,通過start()方法創建線程涉及JVM 。 Java虛擬機通常所做的是充當方法調用和底層操作系統之間的中介 。 這確保了Java環境(大致)以相同的方式運行,而不管操作系統如何(=>着名的Java可移植性)。 但它在窗簾背后的作用(即在JVM的內部) 有所不同,取決於它運行的實際操作系統 。
例如,創建一個線程調用Unix OS上的pthread_create函數(POSIX線程調用),或Windows系統上的CreateThread函數(來自Win32 API)。 這是由Java虛擬機調用的,因此您不必這樣做。
這些功能只是一些例子。 取決於特定的JVM實現(對於不同的操作系統,請注意),start()方法可能會做其他魔術。
然而,原則保持不變。 在start()方法調用的東西 ,你的特定的操作系統本身支持創建線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.