深入探究Java线程与进程有哪些区别
作者:淡沫初夏Zz 发布时间:2023-05-06 13:26:03
一、进程线和程的概念
线程: 一个线程是一个独立的执行流,每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 “同时” 执行着多份代码
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会等待用户线程执行完退出
来源:https://blog.csdn.net/qq_55660421/article/details/123707364


猜你喜欢
- 最近一直都在学习Java,发现目前Java招聘中,mybatis出现的频率挺高的,可能是目前Java开发中使用比较多的数据库ORM框架。于是
- 以下通过3个知识点给大家讲解了上拉加载和下拉刷新的Fragment实现的方法,在对每个知识点介绍了一下用法。1.效果预览1.1.这个首页就是
- 最近在机顶盒上做一个gridview,其焦点需要在item的子控件上,但gridview的焦点默认在item上,通过android:desc
- Cookie1. 概念是服务器通知客户端保存键值对的一种技术。cookie 是 servlet(服务器) 发送到 Web 浏览器(客户端)的
- 本例只做简单功能演示,代码并不严谨,只是说明客户端如何实现连接服务端简单代码。代码在集成Eclipse工具下测试编译运行环境如下图所示:客户
- 以下图中TV VOD两个按键为例,文章中所涉及到的文件只写文件名,因每个方案的路径各不相同,请自行全局搜索文件。 1.获取按键的扫
- 很多时候你新建了Maven 或者SpringBoot 工程,激动的点了主启动类,你就发现了下面的错误这里说的是啥意思呢,你没有数据库相关的链
- 目录结构:Data.xls数据: 后台页面:public void doGet(HttpServletRequest reques
- 承蒙各位厚爱,我们一起每天进步一点点!(鼠标选中空白处查看答案)1、以下不属于构造方法特征的是()正确答案: D构造方法名与类名相同构造方法
- 在有些开发场景,需要对 List 对象列表进行过滤处理,并将有用的数据存放到Map中。例如:告警对象,包含告警uuid(alarmUuid)
- 先看看效果图:package com.fenghuo.struts.download;import java.net.URLEncoder;
- 在 Unity 中实现对游戏数据存储和读取的方法主要有这几种:使用本地持久化类 PlayerPrefs使用二进制的方法序列化和反序
- 目前为止,我遇到使用Tomcat有三种情况:第一,使用Eclipse,在Eclipse中配置Tomcat。第二,直接在Tomcat中部署项目
- 1、悲观锁和乐观锁我们可以将锁大体分为两类:悲观锁乐观锁顾名思义,悲观锁总是假设最坏的情况,每次获取数据的时候都认为别的线程会修改,所以每次
- Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能Jenkins是基于Java开发的一种持续集成工具
- 前言: 有时候我们需要实现长按选择文字功能,比如阅读器一般都有这个功能,有时候某个自定义控件上可能就有这种需求,如何实现呢?正好最近还算闲,
- 多进程如果需要的时候,app可以创建多进程。在进程里面各类组件元素的清单文件条目 、 、 和— 均支持 android:process 属性
- JVM运行原理首先从“.java”代码文件,编译成“.class”字节码文件,然后类加载器将“.class”字节码文件中的类给加载带JVM中
- 记录一下微信第三方实现登录的方法。还是比较简单。一、必要的准备工作1.首先需要注册并被审核通过的微信开放平台帐号,然后创建一个移动应用,也需
- 作为Android的四大组件之一,ContentProvider作为进程之间静态数据传递的重要手段,其在系统级别的应用中起了重大的作用。毫无