Lesson8线程剖析.ppt

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lesson8线程剖析

回顾 File类 输入输出流体系 节点流 链接流 常见流应用 文件读写 对象流 管道流 补充 标准输入输出 随机文件读写 Java新IO 字节流 字符流 Lesson 8: Thread 线程 内容 线程的概念 线程的创建和启动 Thread类 Runnable接口 Callable接口(Future) 线程的状态 线程的控制 多线程的同步 线程之间的通信 线程组、线程池 【参考书】 《疯狂Java讲义》, 第16章 《Java编程思想》4th, 第21章 多任务处理 基于线程的多任务处理的优点 多线程的优势 多进程 VS 多线程 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。 进程和线程的区别 进程 一个独立程序的每一次运行称为一个进程, 设置一个进程要占用相当一部分处理器时间和内存资源 大多数操作系统不允许进程访问其他进程的内存空间,进程间的通信很不方便,编程模型比较复杂 线程 一个程序中多段代码同时并发执行,称为多线程 通过多线程,一个进程表面上看同时可以执行一个以上的任务——并发 创建线程比创建进程开销要小得多,线程之间的协作和数据交换也比较容易 主线程 主线程示例 Thread构造函数 java.lang.Thread类构造方法 Thread(); 无参数 Thread(String threadname); 指定线程实例名 Thread(Runnable target) 参数指定目标对象 Thread(Runnable?target, String?name ) 创建线程 3-1 创建线程 3-2 启动线程2-1 启动线程2-2 JDK5.0以后的Thread框架新特性 Thread类(续) 在新线程中完成计算某个整数的阶乘 public class Factorial { public static void main( String [] args ) { System.out.println(main thread starts); FactorialThread thread=new FactorialThread(10); thread.start(); System.out.println(main thread ends ); } } class FactorialThread extends Thread { private int num; public FactorialThread( int num ) { this.num=num; } Thread类(续) ——运行结果 public void run() { int i=num; int result=1; System.out.println(new thread started ); while(i0) { result=result*i; i=i-1; } System.out.println(The factorial of +num+ is +result); System.out.println(new thread ends); } } 运行结果 main thread starts main thread ends new thread started The factorial of 10 is 3628800 new thread ends Thread类(续) 结果说明 main线程已经执行完后,新线程才执行完 main函数调用thread.start()方法启动新线程后并不等待其run方法返回就继续运行,thread.run函数在一边独自运行,不影响原来的main函数的运行 源程序修改 如果启动新线程后希望主线程多持续一会再结束,可在start语句后加上让当前线程(这里当然是main)休息1毫秒的语句: try { Thread.sleep(1); } catch(Exception e){}; 线程的状态 (4) public class Xyz implements Runnable{ private boolean timeToQuit=false;

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档