windows 本地线程和java虚拟机线程区别

虚拟线程详解 虚拟线程又叫协程。JDK19 中引入了虚拟线程,这是一个重大的更新项,虚拟线程在Project Loom项目中已经孵化很久了。据官方阐述,引入的原因是。允许通过 java.lang.ThreadAPI 的现有代码来使用虚拟线程,并且只做最小的更改。(当然虚拟线程不是Java语言独有的,更不是Java发明的,只是JDK19时才引入,比如Go语言的goroutines和Erlang语言早就支持虚拟线程了)各种语言争相引入虚拟线程的原因就是它能以简单的方式来提高系统并发性能。那么虚拟线程是怎么做到的? 阅读详情

1.windows进程中,主线程执行完毕,则进程终止,所有子线程都将退出。

2.而java虚拟机中,主线程退出了(main),如果还有子线程,则进程不会退出,子线程继续执行。

 

 

实例:

c++  windows

#include "stdafx.h"
#include <process.h>
#include <iostream>
using namespace std;


 unsigned int _stdcall  Child(void *)
{
	for (int i=0; i<1000; i++)
	{
		cout<<i<<endl;
	}
	return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
	_beginthreadex(NULL, 0, Child, NULL, 0, NULL);

	cout<<"main thread end"<<endl;
	return 0;
}


输出结果不确定:输出n(n>=0 && n<=1000)个i的值,然后输出<<"main thread end“,然后进程退出

 

 

 

java 虚拟机:

		Thread td = new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				int i = 0;
				while(i<100)
				{
					i++;
					System.out.println(i+"child");
				}
			}
		});
		//td.setDaemon(true);//设置为守护线程
		td.start();



输出结果为:一定能够输出100个i+child,和一个over,但输出顺序是不确定的。

如果将代码//td.setDaemon(true);放开,则表现和C++ windows下的本地线程一致了。

 

 

总结:虚拟机的一个java进程中,如果非守护线程数目为0,则进程结束,守护线程不再被执行。当然线程默认是非守护线程,否则进程还能起来么?

2014年3月4日16:51:22

ROS2_Moveit2_Ur5e_Grasp项目详解(二):核心模块功能解析 本文深入解析了ROS2_Moveit2_Ur5e_Grasp项目的核心模块功能。重点阐述了OctoMap建图模块如何为机械臂提供实时三维环境感知,并详细介绍了Robotiq夹爪与MoveIt2的集成控制、UR5e的运动规划策略,以及视觉模块如何协同工作,最终实现从目标检测到动态抓取的完整闭环。 阅读详情

相关推荐

本地化部署dify,使用Database插件实现dify直连数据库报错No module named ‘MySQLdb‘解决方案

网上查阅各种资料,有说修改/dify-main/docker/volumes/sandbox/dependencies目录下的python-requirements.txt文件,添加了如下两行,试验后无效。,看到有人是其他报错,但是URI配置如下(在mysql后面加了pymysql),尝试后果真成功了。按照系统提示设置完数据库URI后保存出现错误。在工具市场查询Database,点击后进行授权。最后在该插件的项目地址获得灵感。

qiaoxu1989的博客 4333

java中的线程与操作系统的线程有什么区别

答: 在多核操作系统中,jvm也会允许在一个进程内同时并发执行多个线程。java中的线程和操作系统中的线程分别存在于虚拟机和操作系统中,他们虽然不同,但却是一一对应,息息相关的。 先总述一下,尽量概括到要点,接下来仔细阐述,阐述的详略程度视情况而定,别太简略就行。但是一定一定要条理,哪怕你讲的点都对,但是如果东一榔头西一棒槌,只会让人觉得你思路不清晰,或者知识不系统。 阐述: 我以线程创建与结束,来阐述一下他们的关系吧 首先,日常开发中都是会使用线程池来获取或者创建线程的,而线程在创建时,其实是先创建一

路辉的博客 3425

从智能手机到汽车电子:聊聊IPC-9702/9704A标准如何帮我们搞定不同场景下的PCB可靠性设计

本文探讨了IPC-9702/9704A标准在智能手机和汽车电子等不同场景下的PCB可靠性设计应用。通过分析消费电子、汽车电子和工业设备中的应力特征,详细解读了IPC标准在应变识别和测试方法论中的核心价值,并提供了具体的轻量化设计策略和全生命周期验证方案,帮助工程师提升PCB的长期可靠性。

weixin_30693683的博客 279

【性能】进程&线程&虚拟线程&协程

【性能】进程&线程&虚拟线程&协程介绍

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 1729

STM32 HAL库ADC+DMA配置详解:从CubeMX到实战调试

在嵌入式系统开发中,模数转换器(ADC)是实现传感器数据采集、信号处理等功能的基石。其工作原理是将连续的模拟信号转换为离散的数字量,为微控制器(MCU)提供可处理的数字信息。为了提升系统效率,直接存储器访问(DMA)技术被引入,它作为独立于CPU的数据搬运工,能在不占用CPU资源的情况下,自动完成外设与内存间的数据传输,从而解放CPU以执行更复杂的控制算法或通信任务。这种ADC与DMA的协同工作模式,对于实现高效、实时的数据流处理具有重要价值,广泛应用于电机控制、环境监测、音频处理等场景。本文聚焦于STM3

weixin_30698297的博客 407

华为Ascend C算子开发能力认证(中级)(个人记录,有完整代码,已通过认证,仅供参考)

本文介绍了在昇腾NPU环境下实现Sigmoid算子的完整流程。首先需要在华为云ModelArts-Notebook或开发者套件上搭建环境,要求CANN版本为8.0.0.beta1。主要内容包括:1)实现SigmoidCustom算子的kernel侧核函数代码;2)完成host侧Tiling结构体实现;3)支持Float16数据类型。代码实现部分详细展示了核函数计算流程、数据拷贝和牛顿迭代优化方法。最后介绍了编译部署流程,包括环境配置、代码上传、编译执行等步骤,并提供了提交规范说明。该实现通过调用Ascend

qq_73044452的博客 1107

详解进程和线程的区别

深入浅出的介绍进程和线程

格子衫双肩包的专栏 2503

程序化广告ADX系统架构设计与实现

摘要: 本文详细介绍了程序化广告交易平台(ADX)的系统架构设计与实现。ADX作为连接广告主与媒体的核心平台,采用基于腾讯云和阿里云的微服务架构,包含网络基础设施、负载均衡、消息处理、核心业务服务和多级数据存储等层次。重点解析了Kafka消息队列处理高并发广告请求、Redis实时统计关键指标等核心技术实现,并提供了Java代码示例展示广告请求处理、竞价流程等核心功能。该系统通过分层设计和分布式组件,实现了高性能、高可用的程序化广告交易能力。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 764

Linux下JVM中可生成的最大Thread数量

JVM中可生成的最大Thread数量 JVM中可以生成的最大数量由JVM的堆内存大小、Thread的Stack内存大小、系统最大可创建的线程数量(Java线程的实现是基于底层系统的线程机制来实现的,Windows下_beginthreadex,Linux下pthread_create)三个方面影响。 最近想测试下Openfire下的最大并发数,需

sunlimiao的专栏 3599

【Qt图书管理系统】5.完整版源码及下载地址

Qt图书管理系统完整源码下载。

小鱼酱的博客 7001

Open3D 点云DBSCAN聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,能够识别任意形状的聚类,并处理噪声数据。

纵马踏花向自由 1833

java 线程 cpu_进程,线程,cpu核数,java中进程,线程和本地操作系统的关系

cpu核数+进程+线程windows操作系统(本地)的进程和线程对于windows来说,进程和线程的概念都是有着明确定义的,进程的概念对应于一个程序的运行实例(instance),而线程则是程序代码执行的最小单元。windows下,一个典型的线程拥有自己的堆栈、寄存器(包括程序计数器PC,用于指向下一条应该执行的指令在内存中的位置),而代码段、数据段、打开文件这些进程级资源是同一进程内多个线程所共...

weixin_39978749的博客 301

光学测量仿真软件:Zygo_(5).Zygo的数据处理与分析方法

通过上述综合案例,我们可以看到Zygo中的数据处理与分析方法是如何一步一步应用于实际数据的。从数据导入到预处理,再到滤波、表面分析、缺陷检测和数据可视化,每一步都至关重要,最终确保了数据的准确性和可靠性。处理后的数据还可以导出为多种格式,便于在其他软件中进行进一步的处理或报告。希望这个案例能够帮助您更好地理解和应用Zygo中的数据处理与分析方法。

kkchenjj的博客 946

CPU线程 和 Java线程

一 cpu个数、核数、线程数的关系 cpu个数:是指物理上,也及硬件上的核心数; 核数:是逻辑上的,简单理解为逻辑上模拟出的核心数;一个CPU核心数模拟出2线程的CPU 线程数:是同一时刻设备能并行执行的程序个数,线程数=cpu个数 * 核数,及程数=cpu个数(2) * 核数(2)=4 Windows: wmic 然后物理CPU数“cpu get NumberOfCores”, C...

weixin_34008933的博客 315

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java 多线程 进程和线程区别和联系——0

Test1类重复运行3次后的进程列表如图所 示。可以看到,在任务管理器中创建了3个 javaw.exe进程,说明每执行一次main()方法就创建 一个进程,其本质上就是JVM虚拟机进程 1、在实际的开发应用中,不要为了使用多线程 而使用多线程,要根据实际场景决定。

爱的叹息的专栏 146

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【安卓笔记】进程和线程的基础知识

学会了线程的启动和停止

liosen的博客 1277

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JVM(java虚拟机)过程详解

原文:https://blog.youkuaiyun.com/csdnliuxin123524/article/details/81303711 1.java自动管理堆(heap)和(栈),程序员不能直接的设置堆和栈。 2.jvm的内存是分布在操作系统的堆 堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。 栈(操作系统):由操作系统自动分配释放,存...

qq_37036963的博客 965

JUC-Java线程

把【线程】和【任务】(要执行的代码)分开Java8以后可以使用lambda精简代码FutureTask能够接受Callable类型的参数,用来处理有返回结果的情况。

GreenAmanda的博客 1069

java 切换主线程_Java中——线程详解

1.什么是进程?一个进程对应一个应用程序。 例如:在windows操作系统启动Word就表示启动了一个进程。在java的开发环境下启动JVM,就表示启动了一一个进程。现代的计算机都是支持多进程的,在同一个操作系统中,可以同时启动多个进程。。2.多进程有什么作用?单进程计算机只能做一件事情。 。玩电脑,一边玩游戏 (游戏进程)边听音乐 (音乐进程),对于单核计算机来讲,在同一个时间点上.游戏进称和...

weixin_35663718的博客 458

Java线程

一,创建和运行线程 1.1 直接使用Thread创建 // 创建线程对象,构造方法的参数是给线程指定名字 Thread t = new Thread("t1"){ @Override // run方法内实现了要执行的任务 public void run() { System.out.println("hello"); } }; //

lazyboy2的博客 616

Android和Linux,Windows Mobile,Symbian的区别

<br />Android是在Linux2.6的内核基础之上运行的,提供核心系统服务:安全、内存管理、进程管理、网络组、驱动模型。内核部分还相当于一个介于硬件层和系统中其他软件组之间的一个抽象层次。但是严格来说它不算是Linux操作系统。<br />   <br />    Android系统的系统层面的底层是Linux,中间加上了一个叫做Dalvik的JAVA虚拟机,表面层上面是Android运行库。每个Android应用都运行在自己的进程上,享有Dalvik虚拟机为它分配的专有实例。为了支持多个虚拟机在

seven070707的专栏 1208

测试自己java虚拟机的掌握情况(问题和自己记忆中的答案)

面试自问,java虚拟机概述

运气不好努力来凑 614

Java线程调度详解

在关于线程安全的文章中,我们提到过,对于单CPU的计算机来说,在任意时刻只能执行一条机器指令,每个线程只有获得CPU的使用权才能执行指令。所谓多线程的并发运行,其实是指从宏观上看,各个线程轮流获得CPU的使用权,分别执行各自的任务。前面关于线程状态的介绍中,我们知道,线程的运行状态中包含两种子状态,即就绪(READY)和运行中(RUNNING)。而一个线程想要从就绪状态变成运行中状态,这个过程需要系统调度,即给线程分配CPU的使用权,获得CPU使用权的线程才会从就绪状态变成运行状态。

白话机器学习 361

java多线教程——如何创建建程和线程

目录 1、在 Windows 操作系统中创建进程 2、在 Java 中创建进程 3、在 Java 中创建线程   在上一篇博客中,我们已经介绍了并发和并行的区别,以及进程和线程的理解,那么在Java 中如何创建进程和线程呢? 回到顶部 1、在 Windows 操作系统中创建进程   在 windows 操作系统中,我们创建一个进程通常就是打开某个应用软件,这便在电脑中创建了一个进程。更原始一点的,我们在命令提示符中来做(我们以打开记事本这个进程为例):   第一步:windows+R,输入

a77582581234的博客 157

进程和线程

本文探讨了进程与线程的核心概念及其在实际应用中的差异。内容涵盖:1)进程是资源分配的基本单位,线程是执行流且共享进程资源;2)进程与线程的状态转换机制,如就绪、阻塞、运行等;3)进程间通信方式(管道、消息队列、共享内存等)与线程调度算法;4)死锁的成因与检测方法。通过线上故障案例,揭示了进程假死与线程阻塞的区别,强调理解底层机制对排查系统问题的重要性。文章结合Java线程模型和操作系统原理,为开发者提供了实践指导。

记不住所以写下来 795

并发编程(二)Java线程

一、创建和运行线程 1. 方法一,直接使用Thread 2. 方法二,使用 Runnable 配合 Thread java 8 以后可以使用 Lambda 精简代码 3. 方法三,FutureTask 配合 Thread FutureTask 能够接收 Callable 类型的参数,用来处理有返回结果的情况 二、查看进程线程的方法 1. windows (1)tasklist 查看进程 (2)taskkill 杀死进程 2. l...

yirenyuan的博客 1024
上一篇: Android中shape的使用
下一篇: 浅谈HTTP中Get与Post的区别
hellochenlian
博客等级 码龄17年 629粉丝 295原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellochenlian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值