### Java多线程知识点详解 #### 一、线程与进程基本概念 1. **相关概念** - **进程** - 进程是正在运行中的程序,是系统进行资源分配和调度的基本单位。 - 在一个进程中可以存在多条执行路径,即多线程。 - **线程** - 线程是进程中的一个独立控制单元,负责控制进程的执行。 - 一个线程也称为一个控制单元,这个名称更直观地反映了线程在程序执行中的角色。 - 每个进程至少包含一个线程。 - 当JVM启动时,会产生一个与之对应的进程`java.exe`。 - **主线程** - 主线程是指进程`java.exe`中至少有一个线程负责Java程序的运行,这个线程就是主线程。 - 主线程运行的代码位于`main`函数中。 2. **JVM的多线程启动** - JVM启动后会创建一个`java.exe`进程,并在这个进程中创建至少两个线程:主线程和垃圾回收线程。 - **主线程**:执行应用程序中的`main`函数中的代码。 - **垃圾回收线程**:负责清理主线程运行过程中在堆内存中产生的垃圾对象。 - 垃圾回收线程的存在避免了主线程因内存不足而频繁暂停的问题,提高了程序运行效率。 3. **线程、进程、OS和JVM的关系** - 线程存在于进程中,进程由操作系统(OS)创建。 - 操作系统先创建进程,然后在进程中创建线程。 - 线程并不是直接通过JVM创建的,而是JVM调用底层操作系统的功能来实现线程的创建。 - 总结来说,进程和线程都由本地操作系统创建,而JVM仅起到调用操作系统功能的作用。 #### 二、创建线程的方式之一:继承`Thread`类 1. **`Thread`类的相关概念** - `Thread`类封装了创建线程所需的所有细节,它依赖于Windows或Linux等操作系统。 - `Thread`类是执行线程的类,位于`java.lang`包中,因此无需显式导入。 - 创建线程的第一种方式是通过继承`Thread`类并重写其`run`方法来实现。 2. **创建线程的具体步骤** - **步骤1**:继承`Thread`类并创建其子类。 - **步骤2**:重写子类中的`run`方法。 - 注意:由于父类的`run`方法没有声明抛出异常,因此子类的`run`方法若需处理异常,只能使用try-catch块而不能声明抛出异常。 - **步骤3**:在主线程中,通过调用子类对象的`start()`方法来启动新线程。 - `start()`方法有两个主要功能:启动线程执行并使JVM调用`run()`方法。 3. **`start()`方法的源码解析** - `start()`方法的源码揭示了它的内部机制。当`threadStatus`不为0时,会抛出`IllegalThreadStateException`异常;之后,通过`group.add(this)`将当前线程添加到线程组,并通过本地方法`start0()`启动线程。 4. **多线程案例执行过程分析** - 示例代码展示了如何通过继承`Thread`类创建一个名为`TDemo`的新线程,并在主线程中启动它。 - 通过`TDemo tD = new TDemo();`创建线程对象,并通过`tD.start();`启动该线程。 - `TDemo`线程与主线程同时运行,交替打印输出,体现了多线程并发执行的特点。 #### 结论 Java多线程是Java编程的重要组成部分,它允许程序同时执行多个任务。通过理解线程与进程的概念、掌握创建线程的方法,可以有效地提高程序的执行效率和响应能力。继承`Thread`类是创建线程的一种常见方式,通过对`run`方法的重写实现了线程的功能。同时,了解`start()`方法的工作原理有助于更好地控制线程的生命周期。
剩余63页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 微信小程序跃动小子保卫主公自动通关之执行计划
- 朋友圈防折叠系统源码,简单使用的小工具,众多营销老板都需要
- STM32L4R/S系列中文参考手册
- 一个由商业级项目升级优化而来的微服务架构,采用Spring Boot 3.2 、Spring Cloud 2023等核心技术构建
- GAIIC2024无人机视角下的双光目标检测(Rank6 解决方案)+文档说明(高分项目)
- Unity3D机械臂动画示例
- 非常好的语音识别源代码100%好用.zip
- 0积分【尊重互联网共享原则】tauri2.0所需插件nsis-tauri-utils.dll
- 基于CNN+LSTM实现的网络流量检测系统python源码(高分课设)+文档说明
- PHP中把动态页面生成静态页面的示例