一台电脑上,开一个迅雷在下载游戏,还挂着QQ和一个朋友聊天,这个迅雷和QQ是两个不相关的程序,他们之间没有相互影响,至少看起来是没有关联的。你关闭了迅雷,QQ不会退出。这里的迅雷和QQ是属于不同的进程。进程的运行和调度会消耗很多资源。你的电脑能同时开200个应用程序么?
迅雷里有10个电影在同时下载,他们之间也没有太大的影响,每个下载任务独自运行,不会因为其中一个资源下载失败导致另外的下载失败,取消了其中的一个下载任务,其它的下载任务也不会受到影响。这里的迅雷是一个进程,里面的这10个下载任务就是属于迅雷这个进程的10个线程。
下面来看看Java提供了什么方式来操作进程和线程。
每一个JVM实例是一个进程。怎么理解?
package com.iteye.badpie.javacode.thread;
public class Main {
public static void main(String[] args) {
System.out.println("这是一个JVM进程");
}
}
由一个main方法开始的一个java程序就是一个进程。在Android中表现为一个apk。实际上在java中所有的代码都不是直接在进程中运行的,JVM在启动时会首先给当前进程创建一个线程,然后让代码在这个线程中开始执行,比如这里的main方法就是在这个线程中运行的,这个线程通常称之为主线程,在Android中也有一个类似的称呼叫做UI线程。Android中的Activity,Service,Broadcast等等都是在UI线程中运行的,如果在UI线程的一次调度过程中消耗的时间超过5s,Android就会抛出一个异常,叫做ANR异常(Application Not Response,应用程序无响应)。
每一个线程都有一个名字,下面来看看JVM的主线程的名字叫什么。
package com.iteye.badpie.javacode.thread;
public class Main {
public static void main(String[] args) {
System.out.println("这实际上是属于当前JVM进程的主线程中,代码不可能直接写在进程中。");
String name = Thread.currentThread().getName();
System.out.println(String.format("当前线程(主线程)的名字:%s", name));
}
}
执行结果如下:
这实际上是属于当前JVM进程的主线程中,代码不可能直接写在进程中。
当前线程(主线程)的名字:main
看得出来,JVM默认给的主线程的名字叫做main,大约也是这个线程被称之为主线程的原因吧。
分享到:
相关推荐
10. 多线程:Java内置对多线程的支持,可以创建并控制多个线程同时执行任务,提高程序效率。 11. 核心API:Java标准库提供大量预先定义的类和接口,如集合、IO、网络、日期时间等,方便开发者快速开发应用。 12. ...
Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和丰富的类库而闻名。在Java编程中,"Java代码"通常指的是用Java语言编写的程序或脚本。在这个主题下,我们将深入探讨Java的基础知识,包括语法、类、...
一个线程从A表读数据放入队列 N个线程从队列中取出数据,找到其在子表中的数据 对子表中的数据开3种线程:读,发email,标记状态 N个线程对完成的A表数据做最后处理 支持大数据量跑批,就是个例子,本来是公司发送...
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于java的驾校收支管理可视化平台的开题报告
时间序列 原木 间隔5秒钟 20241120
毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip
基于springboot课件通中小学教学课件共享平台源码数据库文档.zip
基于java的网上购物商城的开题报告
Delphi人脸检测与识别Demo1fdef-main.zip
基于java的咖啡在线销售系统的开题报告
基于java的自助医疗服务系统的开题报告.docx
内容概要:本文档全面介绍了Visual Basic(VB)编程语言的基础知识和高级应用。首先概述了VB的基本特性和开发环境,随后详细讲述了VB的数据类型、变量、运算符、控制结构、数组、过程与函数、变量作用域等内容。接着介绍了窗体设计、控件使用、菜单与工具栏的设计,文件操作、数据库访问等关键知识点。最后讨论了VB的学习方法、发展历史及其在桌面应用、Web应用、数据库应用、游戏开发和自动化脚本编写等领域的广泛应用前景。 适合人群:初学者和中级程序员,尤其是希望快速掌握Windows桌面应用开发的人群。 使用场景及目标:①掌握VB的基础语法和开发环境;②学会使用VB创建复杂的用户界面和功能完整的应用程序;③理解数据库操作、文件管理和网络编程等高级主题。 其他说明:Visual Basic是一种简单易学且功能强大的编程语言,尤其适合用于开发Windows桌面应用。文中不仅覆盖了基础知识,还包括了大量的实用案例和技术细节,帮助读者快速提升编程技能。
基于java的疫情期间高校防控系统开题报告.docx
基于springboot+vue社区老年人帮扶系统源码数据库文档.zip
基于java的超市商品管理系统的开题报告.docx
基于SpringBoot房屋买卖平台源码数据库文档.zip
xdu限通院23微处理器系统与应用大作业(两只老虎),适应于汇编语言keil软件,
<项目介绍> - 新闻类网站系统,基于SSM(Spring、Spring MVC、MyBatis)+MySQL开发,高分成品毕业设计,附带往届论文 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
基于java的学生网上请假系统的开题报告.docx