网站大量收购独家精品文档,联系QQ:2885784924

面向对象程序设计第10章.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计第10章.ppt

第 10 章 多线程程序设计 线程的定义 进程是一个用来描述处于动态运行状态的应用程序的概念,即一个进程就是一个执行中的程序,每个进程都有一块自己独立的地址空间,并可以包含多个线程。这些线程将共享进程的地址空间及操作系统分配给这个进程的资源。 线程是指进程中的一个执行流,多线程是指在一个进程中同时运行多个不同线程,每个线程分别执行不同的任务。 10.1 创建线程 创建线程的两种方法: 利用Thread类创建线程 利用Runnable接口创建线程 1、利用Thread类创建线程 使用这种方式创建、启动线程的基本过程: 声明一个Thread类的子类,并且覆盖其中的run() 成员方法,并将线程执行的程序代码写在其中。 使用时通过调用Thread类提供的start() 方法间接地使用它。 例:利用Thread类创建线程 public class MyThread_1 extends Thread { public void run() { …… } } public class MultiThread_1 { public static void main(String args[ ]) { Thread t1 = new MyThread_1(); t1.setName(T1); Thread t2 = new MyThread_1(); t2.setName(T2); t1.start(); t2.start(); } } 2、利用Runnable接口创建线程 使用这种方式创建、启动线程的基本过程: 声明一个实现Runnable接口的类。 以实现Runnable 接口的类对象为参数创建一个Thread 类对象。 调用Thread类对象的start() 方法启动线程。 例:利用Runnable接口创建线程 public class MyThread_2 implements Runnable { … public void run( ) { …… } } ? public class MultiThread_2 { public static void main(String args[ ]) { MyThread_2 thread = new MyThread_2( ); Thread threadObj = new Thread(thread); threadObj.start(); } } 10.2 线程状态的转换 一个线程的生命周期中,有四个状态,线程就是在这4个状态之间不断变换,直到死亡为止。 线程的优先级 每一个线程都有一个优先级 ,在Thread类中有3个常量MIN_PRIORITY、MAX_PRIORITY、NORMAL_PRIORITY分别表示优先级为1、10和5,它们代表最低优先级、最高优先级和普通优先级。 可以调用Thread类的setPriority(int level) 成员方法为某个线程设置优先级。 例如,假设threadObj是一个Thread类对象,可以用 threadObj.setPriority(6);设置优先级。 10.3 线程控制 基本的线程控制方法 启动线程 start() 阻塞线程 wait() 唤醒线程 notify() 或 notifyAll() 或 interrupt() 线程让步 yield() 等待其它线程结束 join() 判断线程是否处于活动状态 isAlive() 10.4 多线程的同步与互斥 一般来说线程之间不是孤立的,多个线程可能共享某些资源。比如,一个线程要读取数据,另外一个线程要处理这些数据。因此,系统必须对线程进行同步控制,等到第一个线程读取完数据,第二个线程才能处理该数据,从而避免错误。 简单地说,在一个时刻只能够被一个线程访问的资源称为临界资源,而访问临界资源的那段代码则被称为临界区。临界区的使用必须互斥地进行,即一个线程在临界区中执行代码时,其它线程不能够进入临界区。 synchronized Java中,引入了对象”互斥锁”的概念,来保证共享数据操作的完整性。每个Java对象都对应于一个”互斥锁”标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。一旦某个线程获得了该锁,别的线程如

文档评论(0)

cai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档