Java基础第12章.ppt

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

第 12 章 线 程 本章要点 Java线程的概念模型 Java线程的状态控制 临界资源、对象锁 线程的互斥和同步 12.1 线程基本概念 在程序开始投入运行时,系统从程序入口开始按语句的顺序(其中包括顺序、分支和循环)完成相应指令直至结尾,从出口退出,同时整个程序结束; 这样的语句结构称之为进程,或者说进程就是程序在处理机中的一次运行; 一个进程既包括其所要执行的指令,也包括了执行指令所需的任何系统资源,如CPU、内存空间、I/O端口等,不同进程所占用的系统资源相对独立。 目前所流行的操作系统中,大部分都是支持多任务的(如Windows NT/2000,OS/2以及UNIX的各个版本),这实际就是一种多进程的概念——每一个任务就是一个进程; 1 什么是线程? 线程是比进程单位更小的执行单位,在形式上同进程十分相似——都是用一个顺序执行的语句序列来完成特定的功能; 线程没有入口,也没有出口,因此其自身不能自动运行,而必须栖身于某一进程之中,由进程触发执行; 2. 线程的理解 在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源,但是线程之间切换的速度比进程切换要快得多。 2. 线程的理解 从微观上讲,一个时间里只能有一个作业被执行; 在宏观上可使多个作业被同时执行,即等同于要让多台计算机同时工作,使系统资源特别是CPU的利用率得到提高,从而提高了整个程序的执行效率。 3. 线程的实现 为了达到多线程的效果,Java语言把线程或执行环境(execution context)当作一种拥有自己的程序代码和数据的对CPU的封装单位,由Java虚拟机提供控制; Java类库中的类java.lang.Thread允许创建并控制所创建的线程; 4. 线程的结构 下图是线程运行机制示意图: 4. 线程的结构 线程包含 3 个主要部分: 虚拟CPU本身; CPU执行的代码; 代码操作的数据。 4. 线程的结构 在Java中,虚拟CPU体现于Thread类中; 当一个线程被构造时,它由构造方法参数、执行代码、操作数据来初始化。 创建线程方式1:继承Thread类 将一个类定义为Thread的子类,那么这个类就可以用来表示线程; 应用这种形式的构造方法创建线程对象时不用给出任何参数。 这个类中有一个至关重要的方法——public void run(),这个方法称为线程体,它是整个线程的核心,线程所要完成任务的代码都定义在线程体中,实际上不同功能的线程之间的区别就在于它们线程体的不同。 示例 public class myThread1 extends Thread { public void run( ) { while(running) { // 执行若干操作 sleep(100); } } public static void main(String args[ ]) { Thread t = new myThread( ); // 执行若干操作 } } 创建线程二——实现Runnable接口 Runnable是Java中用以实现线程的接口,从根本上讲,任何实现线程功能的类都必须实现该接口; Runnable接口中只定义了一个方法就是run( )方法,也就是线程体; Thread第二种构造方法中包含有一个Runnable实例的参数; 即,必须定义一个实现Runnable接口的类并产生一个该类的实例,对该实例的引用就是适合于这个构造方法的参数。 示例 public class Rnner1 implements Runnable { public void run( ) { for (int i=0; i30; i++) { System.out.println(No + i); } } } 总结 可以构造一个线程如下: Runner1 r = new Rnner1( ); Thread t = new Thread(r); 示例12-1 public class TestThread1 { public static void main(String args[ ]) { Runner1 r= new Runner1( ); Thread t= new Thread( r ); t.start( ); } } public class Rnner1 implements Runnable { public void run( ) { for (int i=0; i30; i++) { System.out.pri

文档评论(0)

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

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

1亿VIP精品文档

相关文档