- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Java线程Javathread第十二章
目标/OBJECTIVE0102030405了解线程的概念、特点以及线程的操作方法熟悉线程的生命周期和调度机制优先级了解线程状态转换了解线程同步原理,掌握线程同步的方法掌握实现线程交互的方法
01线程和多线程
12.1线程和多线程1.线程的概念线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在UnixSystemV及SunOS中也被称为轻量进程(lightweightprocesses),但轻量进程更多指内核线程(kernelthread),而把用户线程(userthread)称为线程。为了实现多线程的效果,Java语言把线程或执行环境当作一个封装对象,包含CPU及自己的程序代码和数据,由虚拟机提供控制。Java类库中的类java.lang.Thread允许创建这样的线程,并可控制所创建的线程。
12.1线程和多线程2.线程的特点及结构(1)线程的特点·线程是轻型实体,只有一点必不可少的资源,即程序、数据和TCB(ThreadControlBlock)。·线程是是独立调度和分派的基本单位,在多核或多CPU的系统上可以提高程序的执行效率。·线程可以共享进程资源,如地址空间、文件描述符和信号处理等。·线程之间可以通过共享内存或消息传递进行通信,但需要使用同步机制来保证数据的一致性。
12.1线程和多线程(2)线程的结构·虚拟CPU,封装在java.lang.Thread类中,控制着整个线程的运行。·执行的代码,传递给Thread类,由Thread类控制顺序执行。·处理的数据,传递给Thread类,是代码执行过程中所要处理的数据。
02线程的状态
12.2线程的状态Java的线程是通过Java的软件包java.lang中定义的类Thread来实现的,生成一个Thread类的对象后,就生成了一个线程,可以通过操作该对象实现启动线程、终止线程、挂起线程等操作。1.线程的生命周期线程是一个动态执行的过程,它也有一个从产生到死亡的过程。
12.2线程的状态2.线程的状态分类线程的状态是指线程在执行过程中的不同阶段。线程的状态可以分为以下几种:1.新建状态(New):线程对象被创建后,就进入了新建状态。2.就绪状态(Runnable):也被称为“可执行状态”。线程对象被创建后,调用该对象的start()方法,从而启动该线程。3.运行状态(Running):线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。4.阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。5.死亡状态(Dead):线程执行完毕或者因异常退出了run()方法,该线程结束生命周期。
12.2线程的状态在程序中常常调用interrupt()来终止线程。interrupt()不仅可以中断正在运行的线程,也可以中断处于阻塞状态的线程。当interrupt()中断处于阻塞状态的线程时,系统会出现InterruptException异常。
03创建线程
12.3创建线程1.通过继承Thread类法创建线程Thread类中定义了许多可以完成线程处理工作的方法,因此可以通过定义一个Thread的子类来创建一个新的线程。继承得到的类必须重写run()方法,该方法是新线程的入口点。通过继承Thread类创建一个新线程包含一下几个步骤:1.定义一个Thread类的子类。2.用该子类创建一个对象。3.使用start()方法启动线程。
12.3创建线程2.通过实现Runnable接口创建线程Runnable是Java中专门用来实现线程的接口,其中只定义了一个run()方法。因此,创建一个线程,最简单的方法是创建一个实现Runnable接口的类。通过实现Runnable接口创建线程具体步骤如下:1.创建一个类并实现Runnable接口。这个接口只有一个方法run(),需要在其中定义线程的逻辑。2.在类中实现run()方法,编写线程的逻辑代码。3.在主程序中创建一个Runnable对象的实例。
12.3创建线程4.创建一个Thread对象,将Runnable对象作为参数传递给Thread的构造函数。5.调用Thread对象的start()方法,启动线程。
12.3创建线程例12.1使用Runnable接口创建两个线程,并让两个线程同时打印自己的名字。Copilot指令:使用Runnable接口创建两个线程,并让两个线程同时打印自己的名字。
12.3
您可能关注的文档
- AI赋能Java语言编程:从入门到高阶 课件 第九章 Java的图形用户界面设计.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第八章 Java语言的高级特性.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第二章 Java标识符与数据类型.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第六章 对象与类.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第七章 Java异常处理.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第三章 表达式和流程控制语句.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第十三章 Java的网络功能.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第十四章 算法竞赛中的Java编程.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第十五章 AI链无代码生成平台Sapper.pptx
- AI赋能Java语言编程:从入门到高阶 课件 第十一章 Java数据流输入与输出.pptx
文档评论(0)