返回顶部
首页 > 资讯 > 后端开发 > Python >深入探究Java线程与进程有哪些区别
  • 170
分享到

深入探究Java线程与进程有哪些区别

2024-04-02 19:04:59 170人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、进程线和程的概念二、为什么要有线程三、进程和线程的关系四、线程和进程的区别(重点)五、用户线程和守护线程区别一、进程线和程的概念 线程: 一个线程是一个独立的执行流,每个线程

一、进程线和程的概念

线程: 一个线程是一个独立的执行流,每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 “同时” 执行着多份代码

public class ThreadDemo {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                //具体业务
                Thread thread1 = Thread.currentThread();
                System.out.println("名称:" + thread1.getName());
            }
        });
        //开启线程
        thread.start();
    }
}

从以上代码可以看出,每个线程都是一个独立的执行流

进程:一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在windows系统中,一个运行的xx.exe就是一个进程

二、为什么要有线程

(1)首先并发编程成为需求

当单核CPU遇到问题,还是会采用多核CPU,那么并发编程能更充分利用多核 CPU资源

(2)虽然进程也可以并编程,但是线程更轻量

①创建线程比创建进程更快.

②销毁线程比销毁进程更快.

③调度线程比调度进程更快.

(3)那么是不是线程创建越多越好

不是的,当线程创建过多,会造成恶意争抢和线程过度调度,返回时就会降低执行效率

三、进程和线程的关系

一个进程中可以有多个线程,多个线程共享进程的堆和方法区 (jdk1.8 之后的元空间)资源,但是每个线程有自己的程序计数器、虚拟机栈 (线程私有)和 本地方法栈(线程私有)

什么是虚拟机栈,本地方法栈

(1)虚拟机栈:每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。

(2)本地方法栈:和虚拟机栈所发挥的作用非常相似,区别是: 虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。 在 HotSpot 虚拟机中和 Java 虚拟机栈合二为一

四、线程和进程的区别(重点)

  • 从属关系上:线程属于进程,而对于进程,则不属于线程
  • 共享方式:线程之间资源和地址空间是可以共享的,而进程之间的地址空间和资源是相互独立的
  • 描述的侧重点:线程是操作系统调度的最小单位,进程是系统分配资源的最小单位
  • 上下切换的速度:线程是比较快的,而相对于进程就比较慢
  • 操作对象:进程是操作系统操控,而线程是程序员可以用编码操纵

五、用户线程和守护线程区别

  • Java程序的进程里有几个线程:主线程,垃圾回收线程(后台线程),守护线程等,在main线程是默认的非守护线程,也就是用户线程
  • 在用户线程创建线程也是用户线程
  • 在守护线程下创建的子线程也是守护线程

关系:当没有用户线程,那么守护线程也就没存在必要了

区别:JVM不等待守护线程执行完退出,JVM会等待用户线程执行完退出

到此这篇关于深入探究Java线程与进程有哪些区别的文章就介绍到这了,更多相关Java线程与进程内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 深入探究Java线程与进程有哪些区别

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

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

猜你喜欢
  • 深入探究Java线程与进程有哪些区别
    目录一、进程线和程的概念二、为什么要有线程三、进程和线程的关系四、线程和进程的区别(重点)五、用户线程和守护线程区别一、进程线和程的概念 线程: 一个线程是一个独立的执行流,每个线程...
    99+
    2024-04-02
  • 深入探讨Go语言线程与进程的区别
    go 语言中,线程与进程的主要区别在于:内存空间:线程共享进程的内存空间,而进程拥有自己的独立内存空间。重量级:线程重量级较轻,进程重量级较重。操作系统管理:进程受操作系统管理,线程不受...
    99+
    2024-04-04
    go语言 并发 golang
  • swoole进程与线程有哪些区别
    今天小编给大家分享一下swoole进程与线程有哪些区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。区别:1、进程是系统中正...
    99+
    2023-06-29
  • python进程与线程的区别有哪些
    python中进程与线程的区别:1.基本单位不同;2.对应关系不同;3.地址空间不同;python中进程与线程的区别有以下几点基本单位不同线程中作为调度和分配的基本单位,而进程则是作为拥有资源的基本单位。对应关系不同一个线程只能属于一个进程...
    99+
    2024-04-02
  • java中线程和进程有哪些区别
    这篇文章将为大家详细讲解有关java中线程和进程有哪些区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入...
    99+
    2023-06-14
  • 深入探究Java线程的状态与生命周期
    目录一、线程的状态新建(初始)就绪(可运行)运行阻塞死亡二、线程的状态转移三、线程的生命周期一、线程的状态 NEW: 安排了工作, 还未开始行动RUNNABLE: 可工作的. 又可...
    99+
    2024-04-02
  • 深入探究Java线程的创建与构造方法
    目录一、创建线程启动线程—start 方法方法一方法二方法三方法四方法五方法六二、run方法和start方法的区别①方法性质不同②执行速度不同③调用次数不同总结三、线程的...
    99+
    2024-04-02
  • 深入探究Java线程不安全的原因与解决
    目录一、什么是线程安全二、线程不安全的原因1、修改共享数据2、原子性3、内存可见性4、指令重排序三、解决线程安全方案一、什么是线程安全 想给出一个线程安全的确切定义是复杂的,但我们可...
    99+
    2024-04-02
  • JavaScriptcookie与session的使用及区别深入探究
    目录1. cookie1.1 什么是cookie1.2 KOA中使用cookie1.3 expires和maxAge1.4 浏览器端设置和删除cookie2. session2.1 ...
    99+
    2022-11-13
    JavaScript cookie与session JavaScript cookie JavaScript session
  • android进程和线程的区别有哪些
    Android进程和线程的区别如下:1. 进程是操作系统进行资源分配和管理的最小单位,而线程是进程中的执行单位。一个进程可以包含多个...
    99+
    2023-09-14
    android
  • Java中进程与线程的区别
    目录进程线程线程优势进程和线程的区别区别1:从属关系不同区别2:描述侧重点不同区别3:共享资源不同区别4:上下文切换速度不同区别5:操纵者不同总结前言: 从用户的角度来看,进程是正在...
    99+
    2024-04-02
  • 如何深入理解Java多线程与并发框中线程和进程的区别
    如何深入理解Java多线程与并发框中线程和进程的区别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。线程和进程的区别1. 资源调度单位在计算机中,进程是程序运行所...
    99+
    2023-06-05
  • 深入了解Python 中线程和进程区别
    目录一、什么是进程/线程1、引论2、线程3、进程4、区别5、使用二、多线程使用1、常用方法2、常用参数3、多线程的应用3.1重写线程法3.2直接调用法4、线程间数据的共享三、多进程使...
    99+
    2024-04-02
  • 深入探究:Golang的优势有哪些?
    【深入探究:Golang的优势有哪些?】 Golang,又称Go语言,是一种由Google开发的开源编程语言。自问世以来,Golang在短短几年内便迅速崛起,并受到了许多开发者的热烈追...
    99+
    2024-03-03
    - 并发性 - 静态类型 - 高效性 go语言 标准库
  • java中的线程与进程的区别
    一、定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有...
    99+
    2020-06-03
    java入门 java 线程 进程 区别
  • 详解Java线程与进程的区别
    这篇文章主要讲解了“详解Java线程与进程的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“详解Java线程与进程的区别”吧! 一、线程与进程的...
    99+
    2024-04-02
  • php多线程与并发线程的区别有哪些
    PHP是一种脚本语言,不支持真正的多线程,但可以通过多进程和协程来实现类似多线程的并发操作。 并发性:多线程是指在一个程序中同时...
    99+
    2023-10-23
    php
  • linux中进程与程序的区别有哪些
    这篇文章主要介绍“linux中进程与程序的区别有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux中进程与程序的区别有哪些”文章能帮助大家解决问题。linux中进程与程序的区别:1、程序是...
    99+
    2023-07-02
  • Linux进程与线程的区别
    这篇文章主要介绍“Linux进程与线程的区别”,在日常操作中,相信很多人在Linux进程与线程的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux进程与线程的区别”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-06
  • java线程sleep和wait的区别有哪些
    Java中的线程sleep和wait方法有以下区别:1. 调用wait方法的线程会放弃自己的锁,并进入等待状态,直到其他线程调用相同...
    99+
    2023-09-25
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作