2017-05-25 24 views
-1

我碰到了Java單證提到什麼樣的資源做一個進程或線程需要JAVA

兩個進程和線程提供了一個執行環境,但 創建一個新線程需要比創建資源少一個新的 過程。

編號:https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html

在這種情況下究竟我們的資源是什麼意思?

EDIT1:

而且爲什麼超過ThreadsRunnable

什麼是通用資源?

這兩種資源有什麼區別?

+0

這裏有大約五個不同的問題。 'Runnables'不會比'Threads'更快。 「通用資源」並不意味着什麼。最後的問題是沒有意義的,直到你指定「兩個」是指什麼。太寬泛。 – EJP

+0

@EJP我的問題是關注他們每個人使用的資源,而不是速度。我知道有些問題與'爲什麼runnable比線程相比更快',但是沒有我發現的問題,這些問題涉及到需要什麼資源。 –

+0

你的問題問,我引用,'爲什麼'Runnable'比'Threads'更快?',答案是它不是。就初始化而言,爲 – EJP

回答

1

產生一個新的進程將創建一個新的Java虛擬機。

凡爲線程將共享存儲器,JVM的等

JVM是不輕程序,所以會消耗更多的存儲器等

一些JVM的是多進程,允許多個進程共享一個JVM。

從問題的鏈接教程: https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html

的進程一般擁有完整,私定的基本​​運行時 資源;特別是每個進程都有自己的內存空間。

線程共享進程的資源,包括內存和打開文件。這使得溝通有效但可能有問題。


爲了解決EDIT 1.

首先讓定義一些通用計算術語。

操作系統概念

資源https://en.wikipedia.org/wiki/System_resource

在計算中,系統資源,或簡單地資源,是有限的可用性的計算機系統中的任何物理 或虛擬組件。每個連接到計算機系統的設備都是一種資源。每個 內部系統組件都是一個資源。虛擬系統資源 包括文件(具體文件句柄),網絡連接 (具體網絡套接字),和存儲區域

過程 https://en.wikipedia.org/wiki/Process_(computing)

在計算中,過程的一個實例一個正在執行的計算機程序。它包含程序代碼及其當前活動。根據操作系統(OS),進程可能由多個執行線程併發執行指令組成。

螺紋 https://en.wikipedia.org/wiki/Thread_(computing)

在計算機科學中,執行的線程是可以獨立地由調度器,其通常是在操作系統的一部分來管理的程序指令的最小序列。

Java概念

過程

關於Java中,一個過程通常運行一個單獨的JVM中,不同的堆等

線程

線程共享一個JVM,並且能夠訪問相同的類和內存,但由於它們是Java之外的一個與操作系統相關的概念,所以它們之間存在交互/創建的開銷。

了Runnable - https://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html

一個Runnable是隻包括在Java中的一個概念,該操作系統是不知道的,這真的只是一個方法調用的運行界面,但是你需要自己處理運行它。

將其從線程抽象出來的原因是涉及線程本身的類必須關注與底層操作系統綁定的兼容性,您的可運行子程序不需要知道任何這些,它只是預期的代碼在Java上下文中運行。

這實際上只是一個標記,向其他人展示您計劃通過線程運行它或其他某種預定執行形式。

凡爲線程是外部的概念,由操作系統管理的,因此具有與存儲器,上下文切換等

的處理是更昂貴的成本,並且具有不共享單獨的程序存儲器。

+0

是的,我得到你,但我的問題是非常具體的。什麼是使用的資源。 [https://en.wikipedia.org/wiki/Resource_(Java)](https:en.wikipedia.org/wiki/Resource_(Java))是一個線程使用的。 –

+0

這不是它指的。這裏使用「資源」一詞是它的通用版本,而不是特定的「統一資源位置」類。 –

+0

檢出EDIT1 –

1

一切都與環境有關,如CPU,內存,磁盤,網絡等