Java基础[06-多线程].ppt
需积分: 0 41 浏览量
更新于2020-12-09
收藏 472KB PPT 举报
Java线程具有五中基本状态
新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();
就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;
运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就 绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪
Java中的多线程是编程中一个重要的概念,尤其在大数据处理和并发操作中不可或缺。Java提供了两种主要的方式来创建和管理线程:继承`Thread`类和实现`Runnable`接口。
**1. 继承Thread类实现多线程**
当你创建一个新的类继承自`Thread`,你需要重写`run()`方法,这个方法包含了线程执行的代码。启动线程并不直接调用`run()`,而是通过`start()`方法,`start()`会调用`run()`来执行线程任务。例如:
```java
class MyThread extends Thread {
@Override
public void run() {
// 线程执行的代码
}
}
MyThread t = new MyThread();
t.start();
```
需要注意的是,`run()`和`start()`的区别在于,`run()`是封装线程执行的代码,而`start()`则是启动线程并由JVM调用`run()`。
**2. 实现Runnable接口**
如果你不想让类继承自`Thread`,可以选择实现`Runnable`接口,然后在`Thread`类的构造函数中传入`Runnable`对象。这种方式可以避免Java的单继承限制,并且允许多个线程共享同一资源。例如:
```java
class MyRunnable implements Runnable {
@Override
public void run() {
// 线程执行的代码
}
}
Thread t = new Thread(new MyRunnable());
t.start();
```
**线程的状态与生命周期**
Java线程有五种基本状态:新建、就绪、运行、阻塞和终止。线程从新建状态通过调用`start()`进入就绪状态,等待CPU调度执行,一旦被选中,进入运行状态。线程可以通过`sleep()`、`join()`等方法改变其状态。
**线程调度**
Java采用抢占式调度模型,线程优先级高的优先执行,但并非绝对,相同优先级的线程会随机选择。线程优先级范围是1到10,其中5是默认优先级。
**线程控制**
- `sleep(long millis)`:使线程暂停指定毫秒数。
- `join()`:等待该线程结束。
- `setDaemon(boolean on)`:将线程标记为守护线程,所有守护线程运行完毕,JVM会退出。
**线程同步与数据安全**
多线程共享资源时可能出现数据安全问题,例如卖票系统中可能出现票数异常。为了解决这类问题,Java提供了线程同步机制,包括同步代码块(`synchronized`)和同步方法。同步代码块或同步方法确保同一时间只有一个线程执行特定代码,保证了数据的一致性,但也可能影响性能。
同步代码块示例:
```java
synchronized(object) {
// 共享数据操作
}
```
同步方法示例:
```java
public synchronized void method() {
// 共享数据操作
}
```
同步方法的锁对象如果是实例方法,则是`this`,如果是静态方法,则是对应的类。
理解并熟练掌握Java多线程的概念、状态、创建方式、调度以及同步机制,对于开发高效、稳定的并发应用至关重要。在大数据处理中,正确地管理线程能够提高计算效率,减少资源浪费,确保程序的正确性和可靠性。

友培
- 粉丝: 409
最新资源
- 基于Comsol的热电效应多物理场仿真:温度场与电流场耦合计算模型
- 非线性不确定性多智能体系统的固定时间事件触发一致性控制策略及其MATLAB实现 MATLAB
- 锂离子电池恒流恒压充电Simulink仿真模型解析及电路结构详解 - CCCV控制系统
- PFC2D5.0离散元法在热力耦合岩石热损伤模拟中的应用及案例代码解析
- PFC裂纹密度云图分析:全面解读裂纹与裂缝的分布密度 · PFC 实战版
- 基于MATLAB的直斜齿轮啮合刚度计算方法及其工程应用 完整版
- 基于MATLAB2018b及以上版本的自适应虚拟阻抗下垂控制(Droop)双机并联系统模型构建及运行曲线研究 · 自适应虚拟阻抗
- COMSOL电化学沉积与催化仿真:枝晶生长及多模式沉积模型解析
- COMSOL结合BIC技术:能带计算、Q因子分析与远场偏振投影的操作指南 · BIC 精选版
- PFC2D模拟活动门试验:土拱效应下的应力分析与Python自动生成等值线云图的研究
- 定向声波发生器设计:基于MATLAB与COMSOL的单元结构、阵列优化及折射率测量 遗传算法
- COMSOL仿真超表面复现技术:多级分解通用方案及其应用
- 岩土工程中FLAC3D与PFC3D耦合模拟隧道开挖:位移连续性与地表沉降规律研究 · 岩土工程 v1.2
- 磁共振成像MRI序列Bloch方程模拟器的matlab实现
- VSG在不平衡电网电压工况下的控制:正负序电网电压、电流分离与电压电流双环控制的实施 v3.0
- 三相电压型虚拟同步发电机(VSG)离网仿真模型研究:包含双闭环控制、虚拟阻抗与预同步切换机制探索的Matlab仿真实现