第8章节-多线程(2008).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文档。上传文档
查看更多
第八章 多线程 主要内容 一、程序、线程与进程的概念 二、多线程编程: 区分主线程和自定义线程 Thread类和Runnable接口 死锁 线程同步 一、程序、线程与进程的概念 程序:程序是为完成特定任务、用某种语言编写的一组指令的集合。指一段静态的代码。 进程:从程序代码的加载、执行到执行完毕的动态过程。每个进程所占用的系统资源相对独立,并有它自己的专用的内存区域(PCB进程控制块)。 同一个应用程序可以被多次加载到系统的不同内存区域,分别执行,形成不同的进程。 是系统进行调度和资源分配的一个独立单位。 程序、线程与进程的概念 线程:线程是比进程更小一级的执行单元。线程不能独立存在,必须存在于进程中,各线程间共享进程空间的数据。 一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。 每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。 线程创建、销毁和线程间切换的代价远小于进程,又称为轻量级进程(lightweight process)。 使用线程的好处: 系统负担小,主要是CPU的分配。 有效的利用系统资源、提高程序的数据吞吐量、更好的发挥硬件的性能。 Java的多线程 Java内置了线程的支持,因此,用Java来编写多线程的程序会相对容易。 但是,对线程的支持是在具体的操作系统的线程能力的基础上实现的,因此,Java的多线程并不是完全的平台无关。 不同操作系统对线程的支持差别较大,很难实现真正的平台无关的多线程开发。 java Sample 每次执行JDK的java.exe程序,就启动了一个独立的Java虚拟机进程,该进程的任务是解析并执行Java程序代码。 每当用java命令启动一个JVM进程,JVM就会创建一个主线程,该线程从程序的main()方法开始执行。 主线程 主线程是由JVM自动创建的;用户可以创建自定义的线程并启动自定义线程。 区分主线程和用户定义的线程 public class MyThread2 extends Thread { public void run() { for (int a = 1; a = 5; a++) { try {Thread.sleep(100);} catch (Exception e) {} System.out.println(Thread.currentThread().getName() + + a); } } public static void main(String[] args) { MyThread2 t1 = new MyThread2(); t1.start(); t1.run(); } } 线程的创建和启动 一、创建线程的方法 方法1: 定义一个java.lang.Thread类的子类,覆盖Thread类的run()方法,然后创建该子类的实例。 参见MyThread1.java 方法2: 定义一个实现Runnable接口的类,实现它的run()方法;然后将这个类的实例作为Thread的构造方法的参数,创建Thread类的实例。 参见MyRunnable.java 二、启动线程 调用start()方法启动线程。如: MyThread t=new MyThread(); t.start(); 如何继承Thread类实现多线程? 1.自定义多线程类的格式 public class 线程子类名 extends Thread { 属性定义; 构造函数定义; public void run( ){ //添加线程启动后需要执行的程序代码; } 其它方法定义; } 在线程启动(start())后,线程类的run()方法由java虚拟机 自动调用执行。 如何继承Thread类实现多线程? 2.创建线程对象 线程子类名 线程对象名=new 线程子类名(实际参数); 3.启动一个线程对象 线程对象名.start(); 4.run()方法的执行 创建线程子类的对象并启动该线程后,该线程对象便处于就绪状态。处于就绪状态的线程首先进入线程就绪队列排队等候处理器资源。 方法1)创建Thread类的子类例子2 public class MyThread1 extends Thread{ public void run(){ for (int i=0;i5;i++){ try{Thread.sleep(100);

文档评论(0)

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

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

1亿VIP精品文档

相关文档