### 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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 410.基于SpringBoot的高校科研信息管理系统(含报告).zip
- 附件1.植物健康状态的影响指标数据.xlsx
- Windows 10 1507-x86 .NET Framework 3.5(包括.NET 2.0和3.0)安装包
- Image_1732500699692.png
- Windows 10 21h1-x86 .NET Framework 3.5(包括.NET 2.0和3.0)安装包
- VMware 是一款功能强大的虚拟化软件,它允许用户在一台物理计算机上同时运行多个操作系统
- 31万条全国医药价格与采购数据.xlsx
- SQL注入详解,SQL 注入是一种常见的网络安全漏洞,攻击者通过在输入数据中插入恶意的 SQL 语句,欺骗应用程序执行这些恶意语句,从而获取、修改或删除数据库中的数据,甚至控制数据库服务器
- 用C语言实现哈夫曼编码:从原理到实现的详细解析
- py爱心代码高级粒子!!