Java面向对象程序设计与系统开发第七章Java多线程第七章Java多线程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.2 线程应用开发篇
功能介绍 编程思路
程序代码
运行结果与总结
1 功能介绍
我们在打字练习软件中都见过,文字的自动循环显
示功能,在此我们来实现如图、所示的文字循环显示
的功能。
2 编程思路
界面设计
就是用来显示文字的界面,正如上图所看到的。本例中 界面设计比较简单,只需要用到窗体类JFrame和标签类 JLabel,窗体类是用来创建主窗体对象,标签类是用来创
MyThread threadB=new MyThread(“ThreadB”,20);//创建线程
threadA.start(); //启动线程 threadB.start(); //启动线程 } }
7.1.3 用Runnable接口来创建线程
Runnable接口是定义在java.lang包中的一个接口,
二是用户在定义自己的类中实现Runnable接口。
7.1.3
继承Thread类创建线程
Java程序语言中的基本类库中已定义了
Thread这个基本类,内置了一组方法,使程序
利用该类提供的方法,去产生一个新的线程、
执行一个线程、终止一个线程的工作,或是查
看线程的执行状态。
【例7-1】通过继承Thread类来实现多线程
第七章
Java多线程
1
介绍Java多线程,包括线程的状态、生命周
期、常用方法及线程的实现等。多线程是Java语
言的一个很重要的特点。在一个Java程序中,我 们可以同时并行运行多个相对独立的线程。
2
本讲概要
基本内容
线程的定义
线程常用方法 线程的实现
本讲重点:
利用Thread类的子类来创建线程 用Runnable接口来创建线程
建在窗体上显示文字的标签对象的。
2 编程思路
文字自动变化的功能
要使文字自动改变,在此,我们设计一个线程类,在 run方法中循环改变文字即可。问题的关键是如何将改变的 文字显示在标签对象中。
采用在创建线程对象时,通过构造方 法,将标签对象传给线程对象,这样线程 对象就可以用改变的文字来设置标签对象 应显示的内容,线程对象的创建我们放在 窗体类的构造方法中来实现
要经历五种状态。通过线程的控制与调度可
使线程在这几种状态间转化,如下图所示。
7.1.1 线程的状态与生命周期
new Thread()
yi el
d( )
新建 newborn
start()
到 片 间 时
运行 running
stop() run()结束 wait() sleep()
消亡 dead
就绪 runnable
其中只提供了一个抽象方法run()的声明。
Runnable接口只有一个方法run(),用户可以声明一 个类并实现Runnable接口,并定义run()方法,将线程代码 写入其中,就完成了这一部分的任务。
【例7-2】通过实现接口Runnable来实现多线程
public class MyRunnable implements Runnable { String s; int n; public MyRunnable(String str,int num) { s=str; n=num; } public void run() { for(int i=0;i<n;i++) { System.out.println(s); } } public static void main(String[] args) { MyRunnable threadA=new MyRunnable("ThreadA",30); MyRunnable threadB=new MyRunnable("ThreadB",20); new Thread(threadA).start(); new Thread(threadB).start(); } }
start() 方法 run()方法 sleep()方法
stop()方法
线程的优先级
优先级:在多线程系统中,每个线程都 被赋予一个执行优先级。优先级决定了线程被 CPU执行的优先顺序。
7.1.3 线程的实现
Java中实现多线程的方法有两种,
一种是继承java.lang包中的Thread类,
3 程序代码
以下是系统每个类的功能介绍(代码见源程序) 1、线程类(WordThread) 实现文字的循环,并设置标签对象的内容。 2、窗体类(ThreadFrame) 就是用来显示文字的界面 3、主类( ThreadWordMainClass ) 在主方法中创建窗体对象并显示出来。
public class MyThread extends Thread {
String s; int n; public MyThread(String str,int num)
{ s=str; n=num; }
public void run() { for(int i=0;i<n;i++) { System.out.println(s); } } public static void main(String[] args) { MyThread threadA=new MyThread(“ThreadA”,30);//创建线程
7.1 线程的概念
线程(Thread) :是一个执行中的程序。
程序是静态的。 线程是动态的。
多线程就是同时执行一个以上的线程, 一个线程的执行不必等待另一个线程执行完 才执行,所有的线程都可能发生在同一时刻
。
进餐队列 服务员
7.1.1 线程的状态与生命周期
新建线程在它的一个完整的生命周期内通常
Байду номын сангаас
CP U调 度
sleep()时间到 notify()
阻塞 blocked
图 线程的生命周期与线程的状态
1.新建状态(Newborn)
2.就绪状态(Runnable)
3.运行状态(Running) 4.阻塞状态(Blocked) 5.消亡状态(Dead)
7.1.2 线程的常用方法
将线程转入可运行状态(就绪 状态),等待JVM调度安排, 一旦轮到它来享用CPU资源时, 就可以进入运行状态。 。 run()是 Thread 最重要的方 法,是线程运行体。想让线程做 事,必须重写 run()方法。 暂停线程的执行,让其他线程 得到机会,sleep()在一定条 件下会抛出受检查异常,必须 用try...catch捕获处理,或用 throws语句声明抛出。 stop()方法可结束线程。