- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LOGO Java面向对象程序设计 第11章 多线程 计算机学院 核心要点 献策的定义 1 创建自己的线程 2 线程的控制与状态 3 线程的优先级 4 线程的同步问题 5 1 线程的定义 程序2 程序1 程序3 不支持多任务的系统 时间 程序2 程序1 程序3 支持多任务的系统 时间 1 线程Thread 构造方法 说明 Thread() 无参数 Thread(Runnable?target) target 为运行对象 Thread(Runnable?target, String?name) target 为运行对象,name为名称。 Thread(String?name) name为线程名称。 Thread(ThreadGroup?group, Runnable?target) target 为运行对象,并作为 group线程组的一员。 Thread(ThreadGroup?group, Runnable?target, String?name) target 为运行对象,name为名称,并作为 group线程组的一员。 Thread(ThreadGroup?group, Runnable?target, String?name, long?stackSize) 具有指定的堆栈大小,其余参数同上,。 Thread(ThreadGroup?group, String?name) name为名称,并作为 group线程组的一员。 2 创建自己的线程-方法1 继承线程类Thread 相关的方法: run():该方法用于线程的执行。在线程启动后会调用该方法。你需要重载该方法,以便让线程做特定的工作。 start():该方法使得线程启动run()方法。 2 创建线程-方法2 实现Runnable接口 一个Runnable接口提供了一个 public void run()方法。 2 创建线程-练习 用上述两种方法创建线程SubThread ,该线程能够在命令行显示 “I am ”+线程名。 编写Application,在其中创建SubThread类的三个对象t1、t2、t3,它们的名称分别为First、 Second、 Third,并启动这三个线程。 3 线程的控制与状态 new(新建):一个线程在调用new()方法之后,调用start()方法之前所处的状态。 runnable(就绪):一旦线程调用了start()方法,线程就转到Runnable()状态。注意,如果线程处于Runnable状态,它也有可能不在运行,这是因为还存在优先级和调度问题。 running(运行状态):线程正在占用CPU时间 blocked(阻塞/挂起状态):线程处于阻塞状态。这是由两种可能性造成的:因挂起而暂停;由于某些原因而阻塞,例如等待IO请求的完成等。 dead(终止状态):线程转到退出状态。这有两种可能性:run()方法执行结束或调用了stop()方法。 就绪 阻塞 结束 新建 运行 3.1 线程状态间的转换 start() 获得CPU时间 run()完毕 sleep() 醒来或 IO完成 yield() 4 线程优先级 线程可以设定优先级,高优先级的线程可以安排在低优先级线程之前完成。 Java中,线程的优先级从低到高以整数1~10表示,共分为10级。 设置优先级是通过调用线程对象的setPriority()方法来进行的。 默认优先级为5,优先级高的线程获得CPU时间的机会相对较高。 5 线程同步 当多个线程对同一资源访问时可能会引起冲突。 通过线程同步解决对共享资源访问的问题。 将方法同步的格式如下: synchronized 返回值类型 方法名( ) { } public class someClass { public synchronized void aMethod() { // Synchronized code block } } 实验 使用GUI和多线程知识,设计赌马程序,假设有6匹马,先在文本框里输入哪匹马能赢,按“开始”按钮后,马(线程控制)向前跑,看你能否猜中。 作业 模仿秒表功能: 按“开始”按钮时,即开始计时,并显示数字时间; 按“停止”按钮时,则停止计时,显示最后时间。 本章小结 了解多线程 1 掌握线程创建 2 熟悉线程同步 3 了解线程优先级 4 LOGO
文档评论(0)