- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章多线程技术.ppt
第八章 多线程技术 §8.1多线程的基本概念 多线程技术是JAVA的特色、应用及管理简单、安全 1、进程与线程 进程:独立运行的程序。每个进程执行一个EXE, 有自己的码段、 数据段、堆栈段(资源独占,除CPU外) 线程:在一个程序(exe)当中,可能同时运行几个程序片 段(相当 于子程序),每个程序片段为一个线程, 各个线程的资源共 享。若程序中只有一个片段、一个进程就只有一个线程(主 线程)。 2、线程执行的机理 CPU按分配的时间片,轮流执行各线程,由于每个线程执行时 间极短(20ms),等效各线程并行运行。 3、线程的主要应用 使程序实现的一些功能具有异步运行效果 动画的实现,时钟的显 示,实时控制 前后台并行运行:前台GUI界面+后台数据采集 §8.2 线程类Thread Thread类中封装了所有的线程操作与控制方法 必须先定义一个继承于Thread的线程类 创建该线程对象 线程的运行状态(起动、停止、休眠、唤醒等)必须由相应的方 法执行 1、几个常用的静态方法(可直接用Thread.方法引用) CurrentThread(),返回正在运行的Thread对象 yield(),停止当前线程运行,将CPU控制权主动移交给下一个线程 sleep(int n),让当前线程休眠n(ms),时间到后继续运行 2、一些实例方法(通过类对象来引用) start(),为本线程建立执行环境,然后调用该线程体(run方法) stop(),终止某线程,删除该线程执行环境 suspend(),挂起该线程、暂停,但不破坏执行环境,可用resume()恢复 resume(),恢复挂起的线程 Wait(long time),停止当前线程,notify()在另一个线程唤醒,或者time(ms)时间到唤醒 notify/notify all();唤醒wait线程(一个或所有) §8.2 线程类Thread 3、一些测试或设置方法、 isAlive() 判断线程是否正在执行状态 join() 等待线程执行完 Setpriority()设置线程优先级(1低----10高) GetPriority()返回线程优先级 SetName(string name)给线程起名 GetName()得到线程名 §8.2 线程类Thread 例8.1 线程一些方法的使用 class testthread { public static void main(string args[]) { Trhead ttt = Thread.currentThread(); ttt.setname(“单线程”); ttt.setpriority(8); System.out.println(“正在执行的线程是”+ttt); try{ for(int i=0;i3;i++) { system.out.println(“睡眠次数”+i); Thread.sleep(1000);} } catch(InterruptedException e) { System.out.println(“sleep异常”);} } } §8.3 线程的状态及生命期 1、创建状态: 用new运算符创建Thread对象,进入创建状态,但未对此线程分配任何资 源,还不能执行它。 2、可运行状态(就绪状态) 用对象的start(),对线程进行登记注册,并分配资源 3、运行状态 进入对象的线程体run(),该线程脱离创建它的主线程,与主线程并行运行 4、阻塞状态,暂时停止线程运行 有下列情况时发生时: ①sleep(),休眠方法,时间到自动恢复 ②wait()等待方法,时间或在其他线程中用nority/notify all唤醒 ③suspend()挂起,用resume恢复 ④等待I/O操作 5、终止状态 用stop()或destroy()方法,终止线程,回收线程资源,为不可恢复 §8.3 线程的状态及生命期 **线程的优先级 新建线程、自动分配一个默认优先级(5级) 主线程一般为普通优先级(5级) 可通过set priority()来修改优先级,根据任务的轻重缓急安排优先级,具有1—10级,10级最高 高级优先级优先抢占资源,比如低级正在执行,高级可中断低级 同级线程在线程对列中按先进先出原则获得资源(cpu控制权) §8.4 多线程的创建、使
文档评论(0)