我遇到了说
的Java文档进程和线程都提供了执行环境,但是 创建新线程比创建新线程需要的资源更少 过程
价:https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html
在这种情况下,我们的实际意义是什么?
EDIT1:
为什么Runnable
比Threads
更快?
什么是通用资源?
两种资源的区别在于什么?
答案 0 :(得分:1)
与环境相关的一切,如cpu,内存,磁盘,网络等。
答案 1 :(得分:1)
生成一个新进程将创建一个新的Java虚拟机。
线程将共享内存,JVM等等
JVM不是轻量级程序,因此会占用更多内存等。
一些JVM是多进程的,允许多个进程共享JVM。
来自问题中的链接教程: https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html
进程通常具有完整的私有基本运行时集 资源;特别是,每个进程都有自己的内存空间。
和
线程共享进程的资源,包括内存和打开文件。这可以实现有效但可能存在问题的沟通。
解决编辑问题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,Process通常运行单独的JVM,不同的堆等。
<强>线程强>
线程共享一个JVM,并且能够访问相同的类和内存,但由于它们是Java之外的与操作系统相关的概念,因此存在交互/创建它们的开销。
可运行 - https://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html
Runnable是一个仅包含在操作系统不知道的Java中的概念,它实际上只是一个名为run的方法的接口,但是你需要自己处理它。
将它从线程中抽象出来的原因是,涉及线程的类本身必须关注与底层操作系统绑定的兼容性,您的runnable不需要知道任何这些,它是&#39;只是希望在Java上下文中运行的代码。
它实际上只是向其他人展示您计划由线程或其他形式的计划执行来计划此事的标记。
线程是由操作系统管理的外部概念,因此具有与内存,上下文切换等相关的成本。
流程成本更高,并且具有不共享的独立程序存储器。