第8课:Java多线程幻灯片.pptVIP

  1. 1、本文档共58页,可阅读全部内容。
  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文档。上传文档
查看更多
傲游浏览器,同时打开多个页面,是很典型的多线程 1。浏览器必须可以同时下载多个图像和网页。 2。Outlook必须让我一边下载新邮件,一边可以看已下载的邮件。 3。我要用网络蚂蚁或者BT工具下载软件 4。我们的IIS服务器必须用多线程支持 * 隐藏的系统线程如垃圾收集线程 Newborn:线程已创建,但尚未执行 Runnable:(就绪) 线程已被调度,按优先级和先到先服务原则在 队列中排队等待CPU时间片资源 Runnnig:正在运行 Blocked:(阻塞) //因为IO操作,键盘输入,或者其他操作 因某事件或睡眠而被暂时性地挂起 Dead:正常/强行中断,退出运行状态 通讯的方法盘子 Wait方的必须在synchronized中调用,否则会出错 Wait之后 WaitThread就不再运行了,使其重新运行的方法是使用notify或notifyAll,否则将一直阻塞。 其中wait方法有三个over load方法: wait() wait(long) wait(long,int) wait方法通过参数可以指定等待的时长。如果没有指定参数,默认一直等待直到被通知。 任何一个时刻,对象的控制权(monitor)只能被一个线程拥有。 无论是执行对象的wait、notify还是notifyAll方法,必须保证当前运行的线程取得了该对象的控制权(monitor) 如果在没有控制权的线程里执行对象的以上三种方法,就会报java.lang.IllegalMonitorStateException异常。 JVM基于多线程,默认情况下不能保证运行时线程的时序性 注意为什么用Object O Super(name)的使用要在最前 Notify调用时和notifyAll调用时的区别 volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。 每个线程有一个自己的变量 线程控制 方法 说明 start() 线程方法,新建的线程进入Runnable状态 yield() 线程静态方法,放弃执行,回到Runnable状态,使其他优先级不低于此线程的线程有机会先运行 sleep() 线程静态方法,线程睡眠指定的一段时间,线程进入blocked状态 join() 线程方法,调用这个方法的线程,会等待加入的子线程完成 wait() 对象方法,释放对象锁,线程进入blocked状态,等待被notify或时间到期 notify()/notifyAll() 对象方法,唤醒其他的线程 中断线程 1.对于睡眠(sleep())或等待(wait())状态的线,调用interrupt(),在interruptedException中捕获并处理。 2.对于非睡眠或等待状态的线程,调用interrupt()并不产生InterruptedException异常。 终止线程 终止线程的唯一方法,是使run()执行结束。 结束run()运行的方法: 设置线程运行结束标志(stopFlag) 线程终止后,不能通过start方法重新启动 线程组 线程组表示一个线程的集合。线程组也可以包含其他线程组。线程组构成一棵树,每个线程组都有一个父线程组。 线程组最有用的一个地方就是控制:只需用单个命令即可完成对整个线程组的操作。 每一个线程都归属于某个线程组,例如在主函数main() 中产生一个线程,则产生的线程属于main这个线程组的一员。简单地说,线程组就是由线程组成。这个类是java.lang.ThreadGroup类。 常用方法 ThreadGroup(String?name) ??????????构造一个新线程组。 ThreadGroup(ThreadGroup?parent, String?name) ??????????创建一个新线程组。 Thread.getThreadGroup() ??????????返回该线程所属的线程组。 线程组 suspend()、resume()方法 suspend()、resume() 1) ? ?通过suspend()函数,可使线程进入停滞状态。通过suspend()使线程进入停滞状态后,除非收到resume()消息,否则该线程不会变回可执行状态。 2) ? ?当调用suspend()函数后,线程不会释放它的锁标志。 Thread类常用方法 static Thread currentThread() 返回对当前正在执行的线程对象的引用。 String getName() 返回该线程的名称。 int getPriority() 返回线程的优先级。 void

文档评论(0)

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

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

1亿VIP精品文档

相关文档