第九章 多线程
一、进程与线程:
①进程:程序的一次动态执行过程
②线程:程序的运行流程,是进程的进一步划分
③多线程:并发机制的一种有效手段,可以同时运行对个
程序块
二、Java中线程的实现:
①继承Thread类:
1、定义格式: class 类名称 extends Thread{
属性;
方法;
public void run(){
线程主体;
}
}
2、启动线程: start方法(不能直接调用run方法)
例:MyThread mt = new MyThread(“线程”);
mt.start();
3、注意事项:start方法只能调用一次,否则会抛出
“IllegalThreadStateException”异常
②实现Runnable接口(更优):
1、定义格式: class 类名称 implements Runnable{
属性;
方法;
public void run(){
线程主体;
}
}
2、启动线程: Thread类中的start方法
例:MyThread mt = new MyThread(“线程”);
Thread t = new Thread(mt);
t.start();
3、注意事项:Thread类中提供了public Thread
(Runnable target)和public Thread(Runnable
target,String name)两个构造方法接收Runnable
的子类实例对象
③Thread类和Runnable接口:
1、Thread类也是Runnable接口的子类
2、实现Runnable接口适合多个相同程序代码的线
程去处理同一资源的情况
3、实现Runnable接口可以避免由于Java单继承特
性带来的局限
4、实现Runnable接口增强了程序的健壮性,代码
能够被多个线程共享,代码与数据是独立的
三、线程的状态:
①创建状态:Thread类的构造方法;处于不可运行状态
②就绪状态:start方法;处于排队等待状态
③运行状态:自动调用run方法;就绪状态的线程被调用
并获得处理器资源
④堵塞状态:sleep方法、suspend方法、wait方法;人为
挂起或需要执行耗时的输入输出操作时,堵
塞消除后,可转入就绪状态
⑤死亡状态:stop方法;人为调用stop方法或run方法执
行结束后,不具有继续运行能力
四、线程操作的相关方法
①取得和设置线程名称:getName()和setName()
1、一般在启动线程前设置名称,也允许为正在运行
的线程设置名称
2、允许两个线程对象同名,但应尽量避免这种情况
3、无名线程系统会自动分配名称“Thread-Xx”
②判断线程是否启动:isAlive();判断线程是否启动而且仍
在运行
③线程的强制运行:join();强制运行期间,其他线程无法
运行,必须等到此线程完成之后才可
以继续执行
④线程的休眠:sleep()
⑤中断线程:interrupt()
⑥后台线程:setDaemon();java进程结束,后台线程也可
以继续执行
⑦线程的优先级:setPriority();优先级越高的线程越有可
能被先执行,但不一定先执行,要看CPU调度
1、MAX_PRIORITY : 10
2、NORM_ PRIORITY : 5(主方法为此优先级)
3、MIN_PRIORITY : 1
⑧线程的礼让:yield();操作暂时让给其他线程
⑨线程的等待与唤醒:wait()和notify()
⑩PS:
1、Runnable接口的子类对象直接调用run方法,是
主方法的线程运行
2、Java程序运行至少启动两个线程:main线程和
垃圾收集线程
3、主线程有可能比其他线程先执行完,此时其他线
程不会受到任何影响
五、同步与死锁
①同步:多个操作在同一个时间段内只能有一个线程进行
②同步方法:
1、同步代码块: synchronized(同步对象){
需要同步的代码;
}
2、同步方法:synchronized 方法返回值方法名称(参数列表){
方法体;
}
③死锁:两个线程都在等待对方先完成,造成了程序停滞
④PS:1、过多的同步有可能产生死锁
2、Java中方法定义的完整格式:
访问权限 [final][static][ synchronized] 返回值类型方法名称(参
数类型参数名称…)[throws Exception1, Exception2]{
[return [返回值|返回调用处]];
}
六、线程的生命周期
相关推荐
"嵌入式Linux应用程序开发第9章多线程编程" 本章主要讲解了 Linux 中的多线程编程,包括 Linux 线程的基本概念、创建及使用、属性设置、同步与互斥问题的处理等内容。通过学习本章,读者将掌握 Linux 中线程的基本...
本章重点讲解了多线程的相关概念和技术。 9.1 线程概念 线程被定义为程序中的单一顺序控制流。在多线程环境中,一个程序可以包含多个这样的流,它们共享同一份程序资源,但各自拥有独立的执行路径。Java语言在语言...
《Java语言编程基础》课件 第九章 多线程(电子版).pptx
Java 多线程程序设计基础 多线程程序设计是 Java 语言的一个重要特性,允许程序同时执行多个任务,从而提高程序的效率和响应速度。本章将详细介绍 Java 多线程程序设计的基础知识。 §9.1 线程的概念 在 Java 中...
在本《Java开发实战从入门到精通》视频教程的第9章中,我们将深入学习Java中的多线程技术。多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算环境中,多...
4. **第九章多线程编程**: 这个章节可能详细介绍了如何在MFC中设计和管理多线程,包括线程的生命周期管理、异常处理、线程同步策略、线程间通信以及多线程环境下Socket编程的实践案例。 综上所述,MFC多线程...
2.熟悉在多线程下参数传递及子程序调用 3.副本功能的简单制作 4.特色功能的简单思路 幻想神域多线程实战视频 第一章(基础设置) 1.多线程实战之中控台简单说明 2.多线程实战之绑定模式与字库制作 3.多线程实战...
C++网络编程实例文件,里面包含各个章节的C++源码。...第九章 基于Windows API的虚拟终端实现 第十章 多线程网络文件传输的设计与实现 第十一章 防火墙的设计与实现 第十二章 邮件转发器 第十三章 telnet bbs
### 嵌入式Linux应用程序开发详解 - 第9章 多线程编程 #### 9.1 Linux下线程概述 ##### 9.1.1 线程概述 线程作为轻量级进程,是现代操作系统中重要的编程概念之一。在Linux中,线程的引入主要是为了提高系统的...
本章“嵌入式Linux应用程序开发详解第9章(多线程编程)”将为我们揭示多线程在嵌入式环境中的应用与实践。 首先,多线程是现代计算机程序设计中的一种常见技术,它允许多个任务在同一时间片内并行执行,从而提高程序...
### 嵌入式Linux应用程序开发详解:多线程编程 #### 9.1 多线程编程概述 ##### 9.1.1 学习目标 - 掌握Linux中线程的基本概念。 - 掌握Linux中线程的创建及使用。 - 掌握Linux中线程属性的设置。 - 能够独立编写多...
《JAVA多线程设计模式》PDF ...第九章 多处理器机器上的并行化 单线程程序并行化 内层循环线程化 循环输出 多处理器扩展 总结 第十章 线程组 线程组概念 创建线程组 线程组方法 操作线程组 线程组、线程和安全 总结
Java语言提供了丰富的多线程支持,而本文件似乎是一本关于Java多线程技术的书籍或教程的第14章。 从提供的内容来看,该章节可能涵盖了一系列的Java多线程编程概念和技术: 1. 线程的创建和执行:在Java中,可以...
在JAVA语言程序设计中,第十四章主要探讨的是多线程这一核心概念。多线程是Java编程中不可或缺的一部分,它允许程序同时执行多个独立的任务,从而提高应用程序的效率和响应性。在Java中,多线程是通过实现Runnable...
易语言调用大漠插件之多线程高级教程(第六套) 第一章 1.中控台组件的简单应用讲解 2.易大漠多线程高级之半自动玩家版中控台界面说明 3.易大漠多线程高级之中控台菜单应用 4.易大漠多线程高级之中控台刷新窗口...
2. "第9章多线程技术.rar":这可能来自一本关于C#编程的教科书或在线课程的第九章,专门讲解多线程技术。章节可能详细介绍了线程的生命周期、线程优先级、线程池等高级主题,并通过示例代码加深理解。 3. "多线程...
你来用 第6章 Read-Write Lock——大家想看就看吧,不过看的时候不能写喔 第7章 read-Per-Message——这个工作交给你了 第8章 Worker Thread——等到工作来,来了就工作 第9章 Future——先给您这张提货单 第10章 ...
《第10章 多线程》主要涵盖了关于并发、并行、进程和线程的基础概念,以及如何在Java中创建和管理线程。以下是详细的知识点解析: 1. **并发与并行**: - **并发**:指的是在一段时间内,多个事件看似同时发生,但...