第九章 多线程
一、进程与线程:
①进程:程序的一次动态执行过程
②线程:程序的运行流程,是进程的进一步划分
③多线程:并发机制的一种有效手段,可以同时运行对个
程序块
二、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 [返回值|返回调用处]];
}
六、线程的生命周期
相关推荐
第9章多线程第9章多线程第9章多线程第9章多线程
嵌入式 Linux 应用程序开发 第9章多线程编程 华清远见
Java第九章多线程程序设计基础篇.ppt
《Java语言编程基础》课件 第九章 多线程(电子版).pptx
第9章、多线程编程
2.熟悉在多线程下参数传递及子程序调用 3.副本功能的简单制作 4.特色功能的简单思路 幻想神域多线程实战视频 第一章(基础设置) 1.多线程实战之中控台简单说明 2.多线程实战之绑定模式与字库制作 3.多线程实战...
C++网络编程实例文件,里面包含各个章节的C++源码。...第九章 基于Windows API的虚拟终端实现 第十章 多线程网络文件传输的设计与实现 第十一章 防火墙的设计与实现 第十二章 邮件转发器 第十三章 telnet bbs
第1 章概述本发行版中线程实现的结构。 第2 章讨论常规POSIX 线程例程,...第9 章讨论会影响程序员编写多线程应用程序的问题。 附录A 说明如何为POSIX 线程设计代码。 附录B 举例说明如何在Solaris 线程中构建屏障。
嵌入式Linux应用程序开发详解-第9章(多线程编程).pdf
视频教程
嵌入式Linux应用程序开发详解-第9章(多线程编程)
《JAVA多线程设计模式》PDF ...第九章 多处理器机器上的并行化 单线程程序并行化 内层循环线程化 循环输出 多处理器扩展 总结 第十章 线程组 线程组概念 创建线程组 线程组方法 操作线程组 线程组、线程和安全 总结
嵌入式Linux应用程序开发详解第9章(多线程编程),不错
第5章至第8章,每章介绍 」种线程之间同步的方法,即互斥量、临界段、事件、信号量,对于每种方法都从Wm32 AP[和MFC的同步类两方面进行介绍:第9章介绍与多线程有关的其他 一些论题,包括多线程的替代方法、各种同步...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾...第9章 注解&枚举 第10章 IO 第11章 多线程 第12章 Java常用类 第13章 Java反射 第14章 网络编程
完整版精品java课件 Java基础入门教程 Java程序设计 第9章 输入输出流(共49页).ppt 完整版精品java课件 Java基础入门教程 Java程序设计 第10章 JDBC数据库编程(共21页).ppt 完整版精品java课件 Java基础入门教程...
第9页 Java程序设计案例教程-第8章-多线程编程全文共36页,当前为第9页。 线程的状态 线程有多种状态:线程可以处于运行(running)状态,只要获得CPU时间就准备运行。运行的线程可以被挂起(suspended),这会临时停止...
linux多线程编程 声明:本文是网上整理的资料,版权属其作者本人所有。 1 第一章 线程基础知识 2 一.什么是线程 2 二.线程的优点 2 三.线程的缺点 2 四.线程的结构 2 五.线程标识 2 六.线程的创建 3 七..线程...
【完整课程列表】 第1章 Java开发入门 第2章 Java编程基础 第3章 面向对象(上) 第4章 面向对象(下) 第5章 多线程_ 第6章 JavaAPI 第7章 集合 ...第9章 GUI 第10章 网络编程 第11章 Eclipse开发工具
Java第9章-多线程程序设计.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~