第10章 线程 《Java程序的设计之网络编程》 .pptVIP

第10章 线程 《Java程序的设计之网络编程》 .ppt

  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文档。上传文档
查看更多
第10章 线程 《Java程序的设计之网络编程》 .ppt

《Java程序设计之网络编程》 重庆大学计算机学院 电子邮件:lizhx@126.com 教学课件 第10章 线程 第10章 线程 10.1 线程的概念 10.2线程的创建 10.3 线程的生命周期及调度 10.4 线程互斥 10.5 线程同步 10.6 线程通讯 10.7 线程死锁 10.1 线程的概念 一个线程是一个程序内部的一个顺序控制流。线程并不是程序,它自己本身并不能运行,必须在程序中运行。在一个程序中可以实现多个线程,这些线程同时运行,完成不同的功能。从逻辑的观点来看,多线程意味着一个程序的多行语句同时执行,但是多线程并不等于多次启动一个程序,操作系统也不会把每个线程当作独立的进程来对待。 10.1 线程的概念 线程与进程在以下几点不同: ??????两者的粒度不同,是两个不同层次上的概念。进程是由操作系统来管理的,而线程则是在一个程序(进程)内。 ?????不同进程的代码、内部数据和状态都是完全独立的,而一个程序内的多线程是共享同一块内存空间和同一组系统资源,有可能互相影响。 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。 10.2.1 采用继承创建线程 该方法比较简单,主要是通过继承java.lang.Thread类,并覆盖Thread类的run()方法来完成线成的创建。Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。Thread类中有两个最重要的函数run()和start()。 10.2.1 采用继承创建线程 public class MyThread extends Thread { static int count=0; public static void main(String[] args) { MyThread p=new MyThread(); p.start(); while(true) { count++; System.out.print(count+:Main\n); } } public void run() { while(true) { count++; System.out.print(count+:Thread\n); } } } 10.2.1 通过实现接口创建线程 该方法通过生成实现java.lang.Runnable接口的类。该接口只定义了一个方法run(),所以必须在新类中实现它。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。下面是使用这一方法的示例程序: 10.2.1 通过实现接口创建线程 public class MyThread2 implements Runnable{ int count=1,number; public MyThread2(int i){ number=i; System.out.println(创建线程+number); } public void run(){ while(true){ System.out.println(线程+number+计数+count); if(++count==3) return; } } 10.2.1 通过实现接口创建线程 public static void main(String args[]){ for(int i=0;i3;i++) { Thread p =new Thread(new MyThread2(i+1)); p.start(); } } } 10.3 线程的生命周期及调度 10.3.1线程生命周期 10.3.2 线程调度和优先级 10.3.1线程生命周期 线程是动态的,具有一定的生命周期,分别经历从创建、执行、阻塞直到消亡的过程。在每个线程类中都定义了用于完成实际功能的run方法,这个run方法称为线程体(Thread Body)。按照线程体在计算机系统内存中的状态不同,可以将线程分为创建(new)、就绪(runnable)、阻塞(blocked)和死亡(dead)四个状态, 10.3.1线程生命周期 在状态转换的各个过程中,最关键也是最复杂的就是就绪状态和阻塞状态转换的过程。Java 提供了大量方法来支持阻塞,下面

文档评论(0)

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

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

1亿VIP精品文档

相关文档