iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >详解Java线程与进程的区别
  • 667
分享到

详解Java线程与进程的区别

2024-04-02 19:04:59 667人浏览 独家记忆
摘要

这篇文章主要讲解了“详解Java线程与进程的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“详解Java线程与进程的区别”吧! 一、线程与进程的

这篇文章主要讲解了“详解Java线程与进程的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“详解Java线程与进程的区别”吧!

 一、线程与进程的区别

先简单说说线程与进程的概念:

(1)进程是指一个内存中运行的应用程序,比如在windows系统中,一个运行的exe就是一个进程。

(2)线程是指进程中的一个执行流程。

区别:

一个程序至少有一个进程,而一个进程至少有一个线程。一个应用程序可以同时启动多个进程。例如对于IE浏览器程序,每打开一个IE浏览器窗口,就启动了一个新的进程。而线程则是指进程中的一个执行流程,一个进程可以有多个线程,每个线程分别执行不同的任务,当进程内的多个线程同时运行时,这种运行方式就被称为并发运行。

另外,线程与进程还有一个非常重要的区别:每个进程在执行过程中都拥有独立的内存单元,而同一个进程中的多个线程则共享内存,从而极大地提高了程序的运行效率。

二、对多线程并发的理解

多线程并发只是表面和感觉上的并发,并不是实质上的并发。一个线程要运行,它必须占有CPU,而我们目前用的计算机大多都是单CPU的,所以一次最多只能有一个线程获取CPU并运行。

多线程的实质是“***限度地利用CPU资源”,当某一个线程的处理不需要占用CPU而只需要和I/O等资源打交道时,让其他线程有机会获得CPU资源。这有点类似于“统筹方法”,例如让你打扫房子和烧水,要在最短的时间内做好这两件事,你一定会想到先把水烧上,然后在等水烧开的空闲时间中去打扫房子,而不是先打扫好了再去烧水,也不是先烧好了再去打扫,这个例子里面,你是那个唯一的CPU,而烧水和打扫就是两个线程。

虽然CPU只有一个,但是它在多个线程之间频繁切换,当切换的频率高到一定程度时,我们就感觉所有的线程在同时运行,于是感觉这多个线程是并发的。因此,并发并不是真的指多个线程同时运行,它仅仅只是形容一种现象。就好像说有些人是“铁人”一样,仅仅只是用于形容某个人不怕苦不怕累,像个“铁人”。

1.  并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥

2. 互斥:进程间相互排斥的使用临界资源的现象,就叫互斥。

3.  同步:进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出作为后一个进程的输入,当***个进程没有输出时第二个进程必须等待。具有同步关系的一组并发进程相互发送的信息称为消息或事件。

其中并发又有伪并发和真并发,伪并发是指单核处理器的并发,真并发是指多核处理器的并发。

4.  并行:在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特种;在多处理器系统中,进程不仅可以交替执行,而且可以重叠执行。在多处理器上的程序才可实现并行处理。从而可知,并行是针对多处理器而言的。并行是同时发生的多个并发事件,具有并发的含义,但并发不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

5. 多线程:多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码。多线程可以实现线程间的切换执行。

6.  异步:异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。

异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。

为了对以上概念的更好理解举一个简单例子, 假设我要做 烧开水,举杠铃100下, 洗衣服 3件事情。

烧开水 这件事情, 我要做的事情为, 准备烧开水 1分钟, 等开水烧开 8 分钟 , 关掉烧水机 1分钟

举杠铃100下 我要做的事情为, 举杠铃100下 10分钟

洗衣服 我要做的事情为, 准备洗衣服 1分钟, 等开水烧开 5 分钟 , 关掉洗衣机 1分钟

单核情况下

同步的完成,我需要做的时间为 1+ 8 +1 + 10 + 1+ 5 +1 = 27 分

如果异步,就是在等的时候,我可以切换去做别的事情

准备烧开水(1) + 准备洗衣服(1) + 举50下杠铃 (5)分钟+ 关洗衣机 1分钟 + 举杠铃20下 (2)分钟+ 关烧水机 1分钟 +  举30下杠铃(3)分钟

1+1+5+1+2+1+3 =14 分钟

双核 异步 并行

核1 准备烧开水 1分钟+ 举杠铃50下(5)分钟+ 等待3分钟 + 关掉烧水机 1分钟

核2 准备洗衣服 1分钟+ 举杠铃50下(5)分钟+ 关掉洗衣机 1分钟 + 等待3分钟

其实只花了 1+5+3+1 = 10分钟

其中还有双核都等待了3分钟

双核 异步 非并行

核1 举杠铃100下(10)分钟

核2 准备烧开水 1分钟+ 准备洗衣服 1分钟+ 等待5 分钟+ + 关掉烧水机 1分钟 + 等待 1 分钟 + 关掉洗衣机 1分钟

其实只花了 1+5+3+1 = 10分钟

多线程的做法

单核下

线程1 准备烧开水 1分钟, 等开水烧开 8 分钟 , 关掉烧水机 1分钟

线程2 举杠铃100下 10分钟

线程3 准备洗衣服 1分钟, 等开水烧开 5 分钟 , 关掉洗衣机 1分钟

cpu 可能这么切换 最理想的切换方式

线程1 准备烧开水1 sleep 1 sleep 5 sleep 1 sleep 2 关开水 1分钟 exit

线程2 sleep 1 sleep 1 举杠铃50 5分钟 sleep 1 举杠铃20 2分钟 sleep1 举杠铃30下 3分钟

线程3 sleep 1 准备洗衣服1 分钟 sleep 5 关洗衣机1分钟 exit

***使用了 14分钟 和异步是一样的。

但是实际上是不一样的,因为线程不会按照我们设想的去跑, 如果线程2 举杠铃先跑,整个流程的速度就下来了。

异步和同步的区别, 在io等待的时候,同步不会切走,浪费了时间。

如果都是独占cpu 的业务, 比如举杠铃的业务, 在单核情况下 多线和单线 没有区别。

多线程的好处,比较容易的实现了 异步切换的思想, 因为异步的程序很难写的。多线程本身程还是以同步完成,但是应该说

比效率是比不上异步的。 而且多线很容易写, 相对效率也高。

多核的好处,就是可以同时做事情, 这个和单核完全不一样的。

感谢各位的阅读,以上就是“详解Java线程与进程的区别”的内容了,经过本文的学习后,相信大家对详解Java线程与进程的区别这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 详解Java线程与进程的区别

本文链接: https://www.lsjlt.com/news/85481.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Java线程与进程的区别
    这篇文章主要讲解了“详解Java线程与进程的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“详解Java线程与进程的区别”吧! 一、线程与进程的...
    99+
    2024-04-02
  • Java中进程与线程的区别
    目录进程线程线程优势进程和线程的区别区别1:从属关系不同区别2:描述侧重点不同区别3:共享资源不同区别4:上下文切换速度不同区别5:操纵者不同总结前言: 从用户的角度来看,进程是正在...
    99+
    2024-04-02
  • Linux进程与线程的区别
    这篇文章主要介绍“Linux进程与线程的区别”,在日常操作中,相信很多人在Linux进程与线程的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux进程与线程的区别”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-06
  • Golang 协程 / 线程 / 进程 区别详解
    概念进程 每个进程都有自己的独立内存空间,拥有自己独立的地址空间、独立的堆和栈,既不共享堆,亦不共享栈。一个程序至少有一个进程,一个进程至少有一个线程。进程切换只发生在内核态。线程 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,是由操作...
    99+
    2023-06-08
    Go istio k8s 云原生
  • 分析详解python多线程与多进程区别
    目录1 基础知识1.1 线程1.2 进程1.3 两者的区别2 Python 多进程2.1 创建多进程方法1:直接使用Process方法2:继承Process来自定义进程类,重写run...
    99+
    2024-04-02
  • 详谈java线程与线程、进程与进程间通信
    线程与线程间通信一、基本概念以及线程与进程之间的区别联系:关于进程和线程,首先从定义上理解就有所不同1、进程是什么?是具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位,重点在系统调度和单独的单位,也就是说进程是可以独 立运行...
    99+
    2023-05-31
    进程 线程 通信
  • python进程与线程的区别有哪些
    python中进程与线程的区别:1.基本单位不同;2.对应关系不同;3.地址空间不同;python中进程与线程的区别有以下几点基本单位不同线程中作为调度和分配的基本单位,而进程则是作为拥有资源的基本单位。对应关系不同一个线程只能属于一个进程...
    99+
    2024-04-02
  • 如何深入理解Java多线程与并发框中线程和进程的区别
    如何深入理解Java多线程与并发框中线程和进程的区别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。线程和进程的区别1. 资源调度单位在计算机中,进程是程序运行所...
    99+
    2023-06-05
  • swoole进程与线程有哪些区别
    今天小编给大家分享一下swoole进程与线程有哪些区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。区别:1、进程是系统中正...
    99+
    2023-06-29
  • java进程、线程、纤程的区别是什么
    本篇内容主要讲解“java进程、线程、纤程的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java进程、线程、纤程的区别是什么”吧!在Java 中,这些短小的代码段一般会被放入一个cl...
    99+
    2023-06-16
  • 深入探究Java线程与进程有哪些区别
    目录一、进程线和程的概念二、为什么要有线程三、进程和线程的关系四、线程和进程的区别(重点)五、用户线程和守护线程区别一、进程线和程的概念 线程: 一个线程是一个独立的执行流,每个线程...
    99+
    2024-04-02
  • Python下进程与线程的原理及区别
      对于所有的语言都可能会遇到进程和线程的问题,一般情况下线程是由进程产生的,一个进程产生多个线程来按照一定的规则(Python下根据CPU调度算法和全局进程锁)来利用CPU,我们称之为多线程模式;而一个进程在产生的同时,同时会生成一个主线...
    99+
    2023-01-31
    线程 进程 区别
  • Java之进程和线程的区别是什么
    这篇文章主要介绍“Java之进程和线程的区别是什么”,在日常操作中,相信很多人在Java之进程和线程的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java之进程和线程的区别是什么”的疑惑有所帮助!...
    99+
    2023-07-05
  • java中线程和进程有哪些区别
    这篇文章将为大家详细讲解有关java中线程和进程有哪些区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入...
    99+
    2023-06-14
  • Java中用户线程与守护线程的使用区别
    目录1.默认用户线程2.主动修改为守护线程2.1 设置线程为守护线程2.2 设置线程池为守护线程3.守护线程 VS 用户线程3.1 用户线程3.2 守护线程3.3 小结4.守护线程注...
    99+
    2024-04-02
  • Java中线程组ThreadGroup与线程池的区别及示例
    目录线程组概念理解线程组实践线程组和线程池的区别线程组概念理解 在java的多线程处理中有线程组ThreadGroup的概念,ThreadGroup是为了方便线程管理出现了,可以统一...
    99+
    2023-05-19
    Java 线程组 Java ThreadGroup
  • 深入探讨Go语言线程与进程的区别
    go 语言中,线程与进程的主要区别在于:内存空间:线程共享进程的内存空间,而进程拥有自己的独立内存空间。重量级:线程重量级较轻,进程重量级较重。操作系统管理:进程受操作系统管理,线程不受...
    99+
    2024-04-04
    go语言 并发 golang
  • python中多进程与多线程有什么区别
    python中多进程与多线程有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、lo...
    99+
    2023-06-14
  • Go语言中线程和进程的区别解析
    go 语言中的进程和线程:进程:独立运行的程序实例,拥有自己的资源和地址空间。线程:进程内的执行单元,共享进程资源和地址空间。特点:进程:开销大,隔离性好,独立调度。线程:开销小,共享资...
    99+
    2024-04-03
    进程 线程 go语言 同步机制
  • 线程和进程的区别是什么
    线程和进程的区别:1、线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小;2、进程相对独立,需要通过显式机制进行通信,切换开销较大;而线程的管理更为灵活,进程的管理相对复杂。线程和进程是操作系统中...
    99+
    2023-08-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作