07_线程(第9篇).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文档。上传文档
查看更多
第10章 线程 10.1 线程的概念 10.2 线程的创建 10.3 线程的生命周期及调度 10.4 线程互斥 10.5 线程同步 10.6 线程通讯 10.7 线程死锁 线程的概念 一个线程是一个程序内部的一个顺序控制流。 线程并不是程序,它自己本身并不能运行,必须在程序中运行。 在一个程序中可以实现多个线程,这些线程同时运行,完成不同的功能。 从逻辑的观点来看,多线程意味着一个程序的多行语句同时执行,但是多线程并不等于多次启动一个程序,操作系统也不会把每个线程当作独立的进程来对待。 线程与进程的不同 两者的粒度不同,是两个不同层次上的概念。进程是由操作系统来管理的,而线程则是在一个程序(进程)内。 不同进程的代码、内部数据和状态都是完全独立的,而一个程序内的多线程是共享同一块内存空间和同一组系统资源,有可能互相影响。 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。 使用多线程进行程序设计的优点 多线程编程简单,效率高(能直接共享数据和资源,多进程不能) 适合于开发服务程序(如Web服务,聊天服务等) 适合于开发有多种交互接口的程序(如聊天程序的客户端,网络下载工具) 适合于有人机交互又有计算量的程序(如字处理程序Word,Excel) 减轻编写交互频繁、涉及面多的程序的困难(如监听网络端口) 程序的吞吐量会得到改善(同时监听多种设备,如网络端口、串口、并口以及其他外设) 有多个处理器的系统,可以并行运行不同的线程(否则,任何时刻只有一个线程在运行) 线程的创建 2种方法: 采用继承创建线程 通过实现接口创建线程 采用继承创建线程 该方法比较简单,主要是通过继承java.lang.Thread类,并覆盖Thread类的run()方法来完成线程的创建。 Thread 类是一个具体的类,不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。Thread类中有两个最重要的函数run()和start()。 采用继承创建线程 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); } } } 通过实现接口创建线程 该方法通过生成实现java.lang.Runnable接口的类。该接口只定义了一个方法run(),所以必须在新类中实现它。 但是Runnable接口并没有任何对线程的支持,我们还必须创建Thread 类的实例,这通过 Thread类的构造函数public Thread(Runnable target);来实现。 下面是使用这一方法的示例程序: 通过实现接口创建线程 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; } } public static void main(String args[]){ for(int i=0;i3;i++) { Thread p =new Thread(new MyThread2(i+1)); p.start(); } } } 线程的生命周期及调度 线程生命周期 线程调度和优先级 线程的生命周期 线程是动态的,具有一定的生命周期,分别经历从创建、执行、阻塞直到消亡的过程。 在每个线程类中都定义了用于完成实际功能的run方法,这个run方法称为线程体(Thread Body)。 按照线程体在计算机系统内存中的状态不同,可以将线程分为创建(

文档评论(0)

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

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

1亿VIP精品文档

相关文档