Java-线程.docVIP

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

Java线程 线程在游戏和网络程序设计中被广泛应用 基本概念: 1.程序是一段静态代码。它是应用程序执行的蓝本,通常保存在磁盘上。 2.进程是程序的一次动态执行过程,它对应了从代码加载、执行、结束的一个完整过程。 3.线程是比进程更小的执行单位,它是进程中的执行流程。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程都有自身的产生、存在和消亡的过程。 线程的状态和生命周期 一个线程有5种状态: 新建:当一个线程类或其子类的对象被实例化时,新生的线程便处于新建状态, 此时,它已具备了相应的内存和其它资源。 就绪(可运行):处于新建状态的线程被启动后(调用start()方法),便进入线程队列排队等待CPU服务,此时它已经具备了运行条件,一旦拥有CPU资源时,便立即开始其运行状态。 3.运行:当就绪队列的线程被调度并获得处理器资源的状态。此时线程执行run()方法。 4.阻塞:一个正在执行的线程,被中断挂起,让出CPU资源的状态。有4种中断情况: A .JVM 将CPU资源从当前线程切换到其它线程,使本线程让出CPU的使用权。 B. 线程函数执行了sleep(int millisecond) 方法,使自身进入休眠状态。经过millisecond 毫秒之后,该线程就重新进入队列排队等待CPU资源,以便从中断处继续运行。 C. 线程函数执行了wait() 方法,使自身进入等待状态,从而中断自身运行。这种中断 必须借助于其它线程(本线程外部)调用notify()方法通知该线程重新进入队列 排队等待CPU资源,以便从中断处继续运行。 D. 线程使用CPU资源期间,执行某个操作进入阻塞状态,比如执行读/写操作引起 阻塞。这种中断只有当引起阻塞的原因消失才能够从中断处继续执行。 5.死亡:线程已完成生命周期,不再具有继续运行的能力。其原因有二:一是正常运行的 线程完成全部工作,另一个是线程被强制性终止。 说明: 线程在某一时刻总是处于一个确定的状态中,但是,只能区分该线程是否存活。 新建和死亡状态为非存活状态。而Runnable,Running,Blocked状态为存活状态。, 阻塞事件的产生以及消除阻塞的方法 2.1. 调用sleep()方法进入休眠产生阻塞,休眠时间到阻塞自动解除 2.2. 执行I/O阻塞操作产生阻塞,I/O 操作完成,阻塞自动解除 2.3. 线程A欲获得一个锁,但该锁被其它线程持有,使A阻赛等待,在这种情况下,通常由两种解除阻塞的方法:A. 其它线程释放锁;B 线程设置了等待并超时。 2.4. 线程等待某个条件满足产生阻塞(await/wait),在这种情况下,通常有两种解 除阻塞的方法:A.其它线程对条件作了修改,并发起信号给等待该条件的线程; await对应的通知方法为signal()或signalAll(),而wait对应的通知方法为notify() 或notifyAll(); B. 线程设置了等待并超时。 2.5. 线程被调用suspend()方法挂起产生阻塞,调用resume()方法使其恢复。(sun 已不建议使用了!) 三.线程调度与优先级: 处于就绪状态的线程首先进入就绪队列排队等候处理器资源,同一时刻处于就绪队列中的线程可能有多个,Java虚拟机中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别。多线程系统给每个线程自动分配一个优先级,任务较急的线程,分配较高的优先级,优先获得处理器资源,反之,较低优先级的线程要等到较高优先级的线程执行完毕,才能获得处理器资源。 1.Thread优先级常量 Thread.MIN_PRIORITY 最低优先级; Thread.MAX_PRIORITY 最高优先级; 所有线程的优先级都介于这两个常数之间。 线程优先级 2.1. 设置优先级 setPriority(int grade) grade必须 介于1—10之间,否则将产生 IllegalArgumentException 异常。缺省的优先级为5. 2.2. 获得优先级 int getPriority() . 说明: 线程的优先级与操作系统有关,有的操作系统只能识别3个优先级别。 四.创建线程 Java线程也是一种对象,但只有实现了Runnable接口的类的对象才有资格成为线程。 有两种创建线程的方法:一个类实现Runnable接口;一个类从Thread类派生(因为该类实现了Runnable接口).,并覆盖(改写)run()方法 1.Runnable接口 interface Runnable{ void run(); 接口方法,这是线程对象必须执行的方法!它规定线程完成的实际操作 } 2创建线程的方法: 2.1. 如果类从Thread类继

文档评论(0)

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

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

1亿VIP精品文档

相关文档