023_Java线程_1.pptVIP

  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文档。上传文档
查看更多
023_Java线程_1

目标 进程与线程的概念 线程的创建方式 线程相关的常用方法 线程的优先级别 守护线程 线程状态 线程运行的注意点 进程与线程 进程:正在执行的一个独立的程序,对于单CPU来说,进程在宏观上是并发的,但在微观上是串发的。 线程:在一个进程内部的“可以并发执行的多个函数”,一个进程中有N个线程 对于进程,每一个进程都是独占数据空间,进程间的切换会有较大的开销;而对于线程,它生活在进程内部(轻量级进程),它们共享进程空间,线程间的切换开销小,线程是由操作系统(OS)来维护的。 多进程和多线程 多进程:在操作系统中,在同一时刻有多个程序在同时运行(多任务)。 多线程:在同一应用程序中有多个顺序流同时执行。 多线程就是引入了多任务的思想:单个程序看起来可以同时处理多个“任务”,这个任务被称之为线程。 通过一个多线程程序感受一下。 多线程示例 Java对多线程的支持 Java运行时系统实现了一个用于调度线程执行的线程调度器,用于确定某一时刻由哪一个线程在CPU上运行。 在Java技术中,线程通常是抢占式的而不需要时间片分配进程。抢占式调度模型就是许多线程处于可以运行状态(等待状态),但实际上只有一个线程在运行。该线程一直运行到它终止进入可运行状态(等待状态),或者另一个具有更高优先级的线程变成可运行状态。在后一种情况下,低优先级的线程被高优先级的线程抢占,高优先级的线程获得运行的机会。 Java中如何创建线程? Java在语言级提供了对多线程程序设计的支持 实现多线程程序的两种方式: 实现java.lang.Runnable接口 继承java.lang.Thread类 实现或重写run()方法 调用start()方法启动线程 创建线程示例 线程相关的常用方法 start():启动线程 run():必须重写此方法,里面放线程处理代码 interrupt():发送中断请求,如果当前线程sleep了,则抛出InterruptException异常 isInterrupted():检查线程是否已经被中断了 currentThread():静态方法,返回代表当前执行的线程 getName() :获取线程的名称 线程的优先级别 在Java中,每个线程都有优先级,在大多数情况下,运行中线程的优先级会大于或等于运行池中线程的最高优先级。这种调度方式接近于JVM规范的要求。 可以使用setPriority方法进行设置 MIN_PRIORITY(在Thread中定义为1) MAX_PRIORITY (在Thread中定义为10) NORM_PRIORITY (在Thread中定义为5) 一定不能依赖线程的优先级来保证程序的正确行为 守护线程 守护线程也称为后台线程、精灵线程 守护线程的唯一作用就是为其他线程提供服务,当只剩下守护线程时,就没有运行程序的必要了 通过setDaemon(boolean isDaemon)设定,该方法必须在线程开始执行之前调用 线程状态 new(新生) 使用new创建一个线程之后,调用start方法之前 runnable (可运行) 调用了start方法之后,表示线程有资格运行 running(运行中) 调度器从可运行池中挑选一个线程,所处的“欢乐时光” blocked (被阻塞) 调用了sleep、yield、join等方法 线程调用一个在I/O上被阻塞的操作 线程仍然是活的,但是当前没有条件运行 dead (死亡) run方法正常退出 发生异常终止了run方法而使线程死亡 线程状态示意图 线程阻塞方法 Thread.yield ():阻塞方法 join():等待直到指定的线程执行完成 join(long millis):等待直到指定的线程执行完成或经过指定毫秒数 Thread.sleep (long millis):睡眠方法 关于线程运行的注意 直接调用run()方法不会启动线程 当线程的目标run()方法结束时,该线程就完成了 只要线程已经启动过,它就永远不能再次启动,否则会引发IllegalThreadStateException异常 可运行线程变成运行中线程的顺序是没有保证的 当提到线程运行结果时,很少是有保证的 总结 进程与线程的概念 线程的创建方式 线程相关的常用方法 线程的优先级别 守护线程 线程状态 线程运行的注意点 Java 线程-1 JavaSE 高级 public class ThreadTest1 implements Runnable { private String threadName;// 线程名称 public ThreadTest1(String threadName) { this.threadName = threadName; }

文档评论(0)

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

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

1亿VIP精品文档

相关文档