- 1、本文档共89页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章线程和网络编程讲述
第三章线程和网络编程
南京邮电大学通信与信息工程学院
王诚
wangc@
Java实用编程技术与项目实战
在操作系统中都会涉及处理机管理,即会引入一个进程的概念,它是动态的、相互隔离的、独立运行的、是资源分配单位及调度的基本单位
进程是由进程控制块、程序段、数据段三部分组成
线程是共存于一个进程中的多个并发执行流
Java 是第一个在语言本身中显式地包含线程的主流编程语言,而不是对底层操作系统的调用
线程概念
Java实用编程技术与项目实战
进程与线程是有区别的。进程(process)本质上是一个并发执行的程序。因此,基于进程(process-based)的多任务处理的特点是允许你的计算机同时运行两个或更多的程序。基于线程(thread-based)的多任务处理环境中,线程是最小的执行单位,线程也称轻量级进程,共享进程的内存、文件句柄、和状态,单线程具有自己的堆栈、自己的程序计数器和自己的局部变量
线程概念
Java实用编程技术与项目实战
多线程主要是为了节约CPU时间。多线程程序比多进程程序需要更少的管理费用。进程是重量级的任务,需要分配它们自己独立的地址空间。进程间通信是昂贵和受限的。进程间的转换也是很需要花费的,即进程切换需要花费大量处理机时间。而线程是轻量级的任务,共享相同的地址空间并且共同分享同一个进程。线程间通信是便宜的,线程间的切换也是低成本的
线程概念
Java实用编程技术与项目实战
Java 运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程。实际上,Java 使用线程来使整个环境异步。这有利于通过防止CPU循环的浪费来减少无效部分
Java 是多线程处理模型。其优点在于取消了主循环/轮询机制。一个线程可以暂停而不影响程序的其他部分,即多个线程通过系统调度进行并发执行。在 Java 程序中出现线程阻塞,仅有一个线程暂停,其他线程继续运行
Java线程模型
Java实用编程技术与项目实战
每个线程都有产生、运行、消亡的状态转换过程
Java线程模型
Java实用编程技术与项目实战
创建状态(new Thread) :执行下列语句时,线程就处于创建状态:
Thread myThread = new MyThreadClass( ); 当一个线程处于创建状态时,它仅仅是一个空的线程对象,系统不为它分配资源,尚未执行(start()尚未调用)
可运行状态( Runnable ):当一个线程处于可运行状态时,系统为这个线程分配了它需的系统资源,安排其运行并调用线程运行方法,这样就使得该线程处于可运行( Runnable )状态。
如执行:Thread myThread = new MyThreadClass( );
myThread.start( );
Java线程模型
Java实用编程技术与项目实战
不可运行状态(Not Runnable):不可运行状态也称为阻塞状态(Blocked)。因为某种原因(输入/输出、等待消息或其它阻塞情况),系统不能执行线程的状态。这时即使处理器空闲,也不能执行该线程。进入不可运行状态的原因有如下几条:
调用了sleep()方法;
调用了suspend()方法;
为等候一个条件变量,线程调用wait()方法;
输入输出流中发生线程阻塞。
Java线程模型
Java实用编程技术与项目实战
死亡状态(Dead):线程的终止一般可通过两种方法实现:自然撤消(线程执行完)或是被停止(调用stop()方法)。不推荐通过调用stop()来终止线程的执行,而是让线程执行完
Java线程模型
Java实用编程技术与项目实战
Java 的多线程系统建立于 Thread 类。Thread类封装了线程的执行。为创建一个新的线程,你的程序必须扩展 Thread 或实现 Runnable接口
Thread 类方法如下表:
Java线程模型
Java实用编程技术与项目实战
Java线程模型
方法
意义
getName
获得线程名称
getPriority
获得线程优先级
jsAlive
判定线程是否仍在运行
join
等待一个线程终止
run
线程的入口点.
sleep
在一段时间内挂起线程
start
通过调用运行方法来启动线程
Java实用编程技术与项目实战
Java程序至少包含一个线程,即当 Java 程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面:它是产生其他子线程的线程;通常它必须最后完成执行,因为它执行各种关闭动作
主线程
Java实用编程技术与项目实战
尽管主线程在程序启动时自动创建,但它可以由一个 Thread 对象控制。为此,你必须调用方法 currentThread()获
您可能关注的文档
最近下载
- FPWINPro(第10章_利用指令列表编写程序).pdf VIP
- 《GB 30978-2014饮水机能效限定值及能效等级》(2025版)深度解析.pptx
- 2023年急性ST段抬高型心肌梗死诊断和治疗指南(2023年0326222214).docx
- 杭州西湖区小升初考试题.doc VIP
- ALC墙板安装合同协议书7篇.docx VIP
- 青岛版《科学》五制四年级上册第一单元《动物王国》1《蚂蚁》教学设计.pdf VIP
- NB∕T 11326-2023 煤层穿层钻孔水力冲孔技术规范.pdf
- 教学课件:高压电工培训.ppt VIP
- FPWINPro(第6章_由PLC上载程序).pdf VIP
- 银川平原地下水循环及其可更新能力评价的同位素证据-资源科学.PDF VIP
文档评论(0)