- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章多线程,多线程,c多线程,java多线程,python多线程,多线程编程,java多线程实例,c多线程编程,ios多线程,php多线程
教育技术研究所 Thank you! * * * 倚 动 实 验 室 南昌倚动软件有限公司 * 倚 动 实 验 室 南昌倚动软件有限公司 第六章 多线程 授课教师:高成珍 QQ:1281147324 进程和线程 综合示例 线程的互斥和同步 线程的状态和生命周期 创建线程的两种方式 本章主要内容 能够自主实现多线程示例 理解线程的互斥和同步 熟练掌握创建线程的两种方式 熟练掌握线程状态间的转化 本章重点与难点 理解和掌握进程和线程的概念 进程和线程 几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程(Process)。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程(Thread)。 进程与线程的区别 1、进程拥有自己独立的资源,线程不拥有资源,它与父进程的其他线程共享该进程所拥有的全部资源; 2、创建或撤销一个进程所需要的开销比创建或撤销一个线程所需要的开销大; 3、进程为重量级组件,线程为轻量级组件; 任务1 任务2 任务3 多线程在多个CPU上运行 多线程分享单个CPU 任务1 任务2 任务3 并行和并发 并行(Parallel)指在同一时刻,有多条指令在多个处理器上同时执行; 并发(concurrency)指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果。 线程类介绍(Thread) public static Thread currentThread():返回当前执行的线程对象; public final String getName():返回该线程的名称; public final void setPriority(int newPriority):更改线程的优先级。 public Thread.State getState():返回该线程的状态。 public void start():使该线程开始执行,多次启动一个线程是非法的; public static void sleep(long millis) throws InterruptedException在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。 public static void yield():暂停当前正在执行的线程对象,并执行其他线程。 构造方法:Thread()、Thread(String name)、Thread(Runnable target) 线程的创建和启动 定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务; 创建Thread子类的实例,即创建线程对象; 调用线程对象的start()方法启动该线程。 1、继承Thread类创建线程类 在Java中,程序入口被自动创建为主线程,main()方法的方法体就是主线程的线程执行体。 启动线程使用start()方法,而不是run()方法!如果直接调用run()方法,系统会把线程对象当成一个普通对象,而run()方法也是一个普通方法,而不是线程执行体。 线程的创建和启动 定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体即该线程的线程执行体; 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象; 调用线程对象的start()方法启动该线程。 2、实现Runnable接口创建线程 第一种方式只能在类没有继承其它任何类的情况下才能使用?,如果一个类要继承其它的类,最好选用第二种方法,这样有更好的灵活性。 线程的生命周期 1、新建和就绪状态 当程序使用new关键字创建一个线程之后,该线程就处于新建状态,此时它和其他的Java对象一样,仅仅由Java虚拟机为其分配内存,并初始化其成员变量的值。当调用线程对象的start()方法之后,该线程就处于就绪状态,处于这个状态中的线程并没有开始运行,只是表示该线程可以运行了。至于该线程何时开始运行,取决于JVM里线程调度器的调度。 在线程的生命周期中,要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。线程启动以后,不可能一直霸占着CPU独自运行,CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。 线程的生命周期 2、运行和阻塞状态 如果处于就绪
文档评论(0)