Java与面向对象程序设计实验教程第7章 线程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

tortoise.start();// 启动线程1
}
}
面向对象的程序设计
对外经济贸易大学 雷擎
2.实现Runnab源自文库e接口
class JumpBean implements Runnable { private int sleepTime;
public JumpBean()//构造方法 {
sleepTime = (int) (Math.random() * 6000);//获得随机休息毫秒数 }
线程本身的数据通常只有寄存器数据,以及一 个程序执行时使用的堆栈,所以线程的切换比 进程切换的负担要小。
多线程是Java的内嵌特性,Java 虚拟机 允许应用程序并发地运行多个执行线程。
面向对象的程序设计
对外经济贸易大学 雷擎
7.1.2 Thread类和Runnable接
Java中实现多线程有两种途径:继承Thread 类或者实现Runnable接口。Thread类实现 Runnable接口。
上述两种方法中都可用类Thread产生线程的对 象 Thread newthread;
面向对象的程序设计
对外经济贸易大学 雷擎
定义一个Thread类的子类
步骤:
1. 定义一个Thread类的子类,并override run()方法,在这个方法里是你希望这个线程 运行的代码
2. 创建一个这个新类的对象 3. 调用Thread对象的start()方法来启动线
面向对象的程序设计
对外经济贸易大学 雷擎
数组元素初始化的例子
int[] aI; aI=new int[10]; String[] aS; aS=new String[3]; Circle aC[]; aC=new Circle[5];
int k =0 ; for(k=0;k<10;k++) { aI[k] = k*k; }
aS[0] = "aaa"; aS[1] = new String("bbb"); aS[3] = new String("ccc");
for(k=0;k<5;k++) { aC[k] = new Circle(); }
面向对象的程序设计
对外经济贸易大学 雷擎
public void run()
{
try { System.out.println(Thread.currentThread().get Name()+ " going to sleep for " + sleepTime); //区别: 因为不是继承Thread类,因而必须先调用 currentThread方法
面向对象的程序设计
对外经济贸易大学 雷擎
7.1.1 线程的概念
线程和进程都是指正在执行的程序代码,是 与计算机中的并发执行相关的概念。
通过操作系统的调度,多个进程和线程可以 同时、独立的执行。
面向对象的程序设计
对外经济贸易大学 雷擎
线程与进程的区别
线程与进程的区别:
多个进程的内部数据和状态都是完全独立的,而 多线程是共享一块内存空间和一组系统资源,有 可能互相影响.

面向对象的程序设计
对外经济贸易大学 雷擎
实现Runnable接口
步骤:
1. 定义一个类,实现Runnalbe接口,并 override run()方法,在这个方法里是你希 望这个线程运行的代码
2. 创建一个这个新类的对象 3. 创建一个Thread类的对象,用刚才的
Runnable对象作为构造函数参数 4. 调用Thread对象的start()方法来启动线
对外经济贸易大学 雷擎
使用定义好的Runner线程
import java.util.Random;
public class DemoThreadSimple {
public static void main(String[] args) {
//
创建并命名每个线程
Runner rabbit = new Runner("rabbit");
面向对象的程序设计
对外经济贸易大学 雷擎
创建线程的方式
1. 继承类Thread public class mythread extends Thread{ }
2.实现Runnable接口 public class mythread extends SuperClass implements Runnable { }
Runner tortoise = new Runner(“tortoise”); rabbit.setPriority(Thread.NORM_PRIORITY);
tortoise.setPriority(Thread.NORM_PRIORITY+5 );
rabbit.start();// 启动线程1
distance + "米\t休息" + sleepTime + "毫秒"); try { Thread.sleep(sleepTime); } catch (InterruptedException inte) { }
} System.out.println(name+"跑到了终点"); } }
面向对象的程序设计
面向对象的程序设计
Java与面向对象程序设计实验教程第7章 线程
content
7.1 多线程基础 7.2 线程的生命周期 7.3 生产者与消费者问题
实验:多线程
面向对象的程序设计
对外经济贸易大学 雷擎
7.1 多线程基础
7.1.1 线程的概念 7.1.2 Thread类和Runnable接口 7.1.3 在程序中实现多线程
public Runner(String name){ this.name = name;
}
面向对象的程序设计
对外经济贸易大学 雷擎
public void run() { distance = 0.0; for (int i = 0; i < 10; i++) { distance += 100.0; int sleepTime = rand.nextInt(2000); System.out.println(name +"跑了"+

面向对象的程序设计
对外经济贸易大学 雷擎
7.1.3 在程序中实现多线程
一个龟兔赛跑的例子,使用线程模拟了龟兔 在1000米赛跑过程。
面向对象的程序设计
对外经济贸易大学 雷擎
1.定义一个Thread类的子类
class Runner extends Thread { String name; double distance; Random rand = new Random();
相关文档
最新文档