- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 龟兔赛跑——多线程 能力目标: 理解多线程、掌握线程的创建、启动、运行等方法。 掌握线程优先级及其设置方法。 理解线程状态,线程中断和线程同步等概念。 能使用多线程编写龟兔赛跑程序和生产者消费者程序。 内容介绍 13.1 任务预览 13.2 程序、进程与线程 13.3 多线程 13.4 线程类Thread 13.5 线程同步与互斥 13.6 本章小结 13.7 实训13:龟兔赛跑、生产者与消费者 13.1 任务预览 本章实训程序运行结果: 13.2 程序、进程与线程 程序,是代码,是静态的。 进程,是程序在计算机上的一次运行过程,进程是动态的。 线程也是动态的,是比进程更小的概念,它是进程(程序运行过程)的一条执行路线。 Java语言拥有多线程机制。 java.lang包提供线程类Thread,只要定义继承Thread类的子类,并重写线程运行方法run。 线程类的每一个对象都是一个线程,通过start方法启动。 【例13-1】编写龟兔赛跑多线程程序,设赛跑长度为100米,每跑完10米输出一次结果。 class Animal extends Thread { //线程类 public Animal(String name) { //构造方法,参数是线程名 super(name); } public void run() { //线程运行方法 for(int i=0; i=100; i+=10) { if (this.getName().equals(乌龟)){ System.out.println(\t\t乌龟跑了+ i + 米); } else { System.out.println(this.getName() + 跑了+ i + 米); } try{ Thread.sleep((long)(Math.random()*1000)); } //休眠不超过1秒 catch(InterruptedException e){ } } } } 续例13-1 public class Example1 { //运行主类 public static void main(String[] args) { Animal rabbit = new Animal(兔子); //线程(对象)1 Animal tortoise = new Animal(乌龟); //线程(对象)2 rabbit.start(); //启动线程1 tortoise.start(); //启动线程2 } } 13.3 多线程13.3.1 构建Thread子类对象 (1)编写Thread子类,即线程类,格式: class 线程类名称 extends Thread { ... public void run() { ... } //线程运行方法 } 如: class Animal extends Thread { ... } (2)构建线程对象。如: Animal rabbit = new Animal(兔子); //线程(对象)1 Animal tortoise = new Animal(乌龟); //线程(对象)2 (3)调用线程对象的start方法启动线程。如: rabbit.start(); //启动线程1 tortoise.start(); //启动线程2 注:主类main方法也是一条独立的执行路线(线程)。 13.3.2 用实现Runnable接口的对象构建Thread对象 (1)编写实现Runnable接口的类,格式: class 类名 extends 父类implements Runnable { ... public void run() { ... } //线程运行方法 } (2)构建实现Run
文档评论(0)