- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]Java语言程序设计基础教程课件第7章
Java程序设计 第七章 多线程 第7章 多线程 线程简介 Thread类的子类创建线程 实现Runnable接口 基本的线程控制 线程的调度 多线程的互斥与同步 Daemon线程 重点内容: 如何定义一个线程 线程的状态转换关系图 线程间如何实现共享数据 线程间如何处理临界资源 线程间如何实现相互通信 理解生产者--消费者模型 7.1 线程简介 理解线程 理解多线程 7.1 线程简介 程序:是一段静态的代码,它是应用软件执行的蓝本 进程:是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程 线程:线程是比进程更小的执行单位,一个进程在执行过程中,可以产生多个线程,形成多条执行线索。一条执行线索就是一个线程。每个线程都有各自独立的运行栈和程序计数器 7.1.1进程与线程 多线程实现机制:CPU时间片在多个独立的线程间切换,从宏观上看,在一个程序运行期间,有多个顺序流同时执行 多线程代码和数据共享 代码可以或不可以由多个线程共享。 如果两个线程执行同一个类的实例代码,则它们可以共享相同的代码。 数据可以或不可以由多个线程共享。 如果两个线程共享对一个公共对象的存取,则它们可以共享相同的数据。 7.1.2线程的状态 线程在它的一个完整的生命周期中通常要经历如下的几种状态: 1. 创建 (new Thread) 2. 可运行( Runnable ) 3. 运行(Running) 4. 阻塞(Not Runnable) 5. 死亡(Dead) 定义线程的方法 实现Runnable接口 public class mythread implements Runnable 2. 定义Thread类的子类 public class mythread extends Thread 7.2 Thread类的子类创建线程 编写Thread类的子类时,需要重写父类的run方法,其目的是规定线程的具体操作,否则线程就什么也不做,因为父类的run方法中没有任何操作语句。 7.3 实现Runnable接口 用Thread类直接创建线程对象。使用Thread类创建线程对象时,常用的构造方法是: Thread(Runnable target); 在创建线程对象时,向构造方法的参数传递一个实现Runnable接口类的实例,该实例对象称为所创线程的目标对象。 public class ep7_2_2 implements Runnable{ Thread teacher=new Thread(this); Thread student=new Thread(this); ComputerSum sum=new ComputerSum(); public ep7_2_2(){ teacher.start(); student.start(); } public static void main(String[] args) { new ep7_2_2(); } public void run(){ if (Thread.currentThread()==teacher){ Thread.currentThread().setName(teacher); }else{ Thread.currentThread().setName(student); } for (int i = 1; i = 5; i++) { int m = sum.getSum(); sum.setSum(m + 1); System.out.println(我是 + Thread.currentThread().getName() + ,现在的和: + sum.getSum()); try { Thread.sleep(200); } catch (InterruptedException e) { } }} 构造线程体的两种方法的比较: 1. 使用Runnable接口 1) 线程间容易实现共享数据和代码 2) 可以继承于其他类; 2. 直接继承Thread类 1) 不能再继承其他类(不利于代码升级); 2) 编写简单,可以直接操纵线程 7.4 操作线程的常用方法 可以通过线程的方法进行基本的线程控制,常用方法如下: 1.start()方法 线程调用该方法将启动线程,从新建状态进入就绪队列排队。一旦CPU资源轮转到它时,就脱离主线程开始自己的生命周期。 2.run()方法 run()方法中定义线程对象被调度之后所执行的操作,是系统自动调用而用户不能引用的方法 当
文档评论(0)