- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单元十一 线程 学习目标: 掌握线程的概念 掌握线程的创建 掌握线程的生命周期 掌握线程的状态控制方法 掌握线程同步 任务一:简易时钟 一、任务描述 Java的多线程系统建立于Thread类。 Thread类是在java.lang包中定义的,它封装了线程的执行 通过实例化一个Thread对象来创建一个线程。 Java定义了两种方式来创建线程: 实现Runnable接口。 继承Thread类。 本任务编写一个简单的时钟显示程序。 分别用两种方式来完成时钟显示任务。 任务一:简易时钟 二、任务实施 1.通过实现Runnable接口创建线程 public void run() t=new Thread(this,clock); Thread(Runnable threadOb, String threadName) t.sleep(1000)语句:将线程t挂起 Thread类的sleep()方法可能引发一个InterruptedException异常 任务一:简易时钟 2.通过继承Thread类创建线程 类ClockThread是类Thread的子类 声明了一个ClockWithThread类的成员变量 super(s)的作用就是给线程取名,t=c 语句(new ClockThread(clock,cl)).start();通过实例化了一个ClockThread的对象创建了一个新线程,并调用strar()启动了该线程 任务一:简易时钟 三、相关知识 1.Thread类和Runnable接口 Java的多线程系统建立于Thread类 Thread类定义了多种方法可以被派生类重载 2.主线程 当Java程序启动时,主线程(mainthread) 立刻运行 结束运行的最后一个线程 任务一:简易时钟 3.线程的生命周期 (1)创建状态(new) (2)可运行状态(runnable) (3)运行中状态(running) (4)阻塞状态(blocked) (5)死亡状态(dead) 任务一:简易时钟 四、任务小结 本任务详细介绍了线程的两种创建过程: 通过实现Runnable接口, 通过继承Thread类 比较了两种方法的特点 讲述了线程的生命周期 罗列了Thread的多个常用方法 任务二:工作与休息 一、任务描述 线程的生命周期有很多不同的状态。在之前的任务一中,我们使用到sleep()方法来让线程暂停,使之处于休眠状态,直到指定时间到后自动脱离该状态。 在本任务中,我们将运用线程的休眠和唤醒机制来设置一个线程的暂停和运行,从而实现线程工作和休息的控制。 任务二:工作与休息 二、任务实施 1.编写源程序 isAlive()方法的用途 语句test.t.join() 2.运行程序 任务二:工作与休息 三、相关知识 1.isAlive()和join()方法 public boolean isAlive() public final void join() throws InterruptedException public final void join(long millis) throws InterruptedException public final void join(long millis,int nanos) throws InterruptedException 2.interrupt()方法 任务二:工作与休息 3.控制线程状态的其它方法 (1)yield()方法 (2)wait()方法 (3)notify()方法 (4)notifyAll()方法 任务二:工作与休息 四、任务小结 进一步探讨了进程休眠与唤醒的处理 主要介绍了查询和改变进程状态的多种方法,包括isAlive()、join()、interrupt()、wait()和notify()等。 只需要通过对线程调用相应的方法就可实现进程状态的变迁,协助我们完成线程调度、线程通信等任务。 任务三:ATM机的存款与提款 一、任务描述 在之前的任务中,我们仅用到两个线程:主线程和一个用户创建的线程。 当两个或两个以上的线程共享某些资源时,我们需要某种方法来确保资源在某一时刻只能被一个线程所占用,这就是线程同步问题。 模拟银行ATM机,分析在某个用户向某个帐户存钱的同时,另一个用户在另一个地方从该帐户取钱的情况。 任务三:ATM机的存款与提款 二、任务实施 1.不采用线程同步的ATM机 BankAccount类、ATM类、TestSynch类 CPU的内核数量不一致,在处理多线程的程序时,可能会有不同的结果。 不采用线程的同步互斥机制,线程user
文档评论(0)