任务设计考试系统中的倒计时讲课资料

上传人:youn****329 文档编号:137141732 上传时间:2020-07-05 格式:PPT 页数:24 大小:445.50KB
返回 下载 相关 举报
任务设计考试系统中的倒计时讲课资料_第1页
第1页 / 共24页
任务设计考试系统中的倒计时讲课资料_第2页
第2页 / 共24页
任务设计考试系统中的倒计时讲课资料_第3页
第3页 / 共24页
任务设计考试系统中的倒计时讲课资料_第4页
第4页 / 共24页
任务设计考试系统中的倒计时讲课资料_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《任务设计考试系统中的倒计时讲课资料》由会员分享,可在线阅读,更多相关《任务设计考试系统中的倒计时讲课资料(24页珍藏版)》请在金锄头文库上搜索。

1、任务11设计考试系统中的倒计时,学习情境二(考试系统单机版),学习目标,知识目标,深入理解进程与线程的概念。 掌握线程创建的方法。 理解线程状态间的转换、优先级及其调度。 了解线程的同步在实际中的应用。,协调能力、团队合作的能力 接受新知识、自主学习的能力,多线程技术的应用,11.1 任务描述,本次任务是设计倒计时。考试系统中的倒计时功能是必不可少的功能之一,当考生成功登录考试系统后,点击【开始考试】,则计时系统开始倒计时。当考试时间结束时,系统将弹出相应的对话框提示并退出考试。如图11-1,在我们所设计的考试系统中,时间的显示在整个界面的上方,使得考生能清晰地看到时间的显示,把握好考试时间。

2、Java利用线程技术可以实现时间的动态刷新和显示,从而可以实现时间的同步显示。,11.2 技术要点,线程的创建 线程的管理,线程和进程,线程和进程的主要差别体现在如下两个方面: (1)同样作为基本的执行单元,线程的划分比进程小。 (2)每个进程都有一段专用的内存区域。与此相反,线程却共享内存单元(包括代码和数据),通过共享的内存单元来实现数据交换、实时通信与必要的同步操作。,线程的创建,Java中提供了两种创建线程的方法 扩展Thread类 实现Runnable接口来创建线程。 其中Thread类和Runnable接口都定义在包java.lang中。,扩展Thread类创建线程,创建和执行线程

3、步骤,步骤一、 创建一个Thread类的子类,该类必须重写Thread类的run( )方法。 class 类名称 extends Thread /从Thread类扩展出子类 成员变量; 成员方法; public void run() /重写Thread类的run( )方法 线程处理的代码 步骤二、 创建该子类的对象,即创建一个新的线程。创建线程对象时会自动调用Thread类定义的相关构造函数。 步骤三、 用构造函数创建新对象之后,这个对象中的有关数据被初始化,从而进入线程的新建状态。直到调用了该对象的strat()方法。 步骤四、线程对象开始运行,并自动调用相应的run()方法。,举例Thre

4、adDemo1.java,class MyThread extends Thread public void run() for(int i=1;i=10;i+) System.out.println(this.getName()+: +i); public class ThreadDemo1 public static void main(String args) MyThread t=new MyThread(); t.start(); ,举例ThreadDemo2.java,class MyThread extends Thread MyThread(String str) super(

5、str); public void run() for(int i=1;i=5;i+) System.out.println(this.getName()+: +i); public class ThreadDemo2 public static void main(String args) MyThread t1=new MyThread(线程1); MyThread t2=new MyThread(线程2); t1.start(); t2.start(); for(int i=1;i=5;i+) System.out.println(Thread.currentThread().getNa

6、me()+: +i); ,实现Runnable接口创建线程,Java提供了Runnable接口来完成创建线程的操作。在Runnable接口中,只包含一个抽象的run( )方法。 public interface Runnable public abstract void run( ) 利用Runnable接口创建线程,首先定义一个实现Runnable接口的类,在该类中必须定义run( )方法的实现代码。 class MyRunnable implements Runnable public void run() /新建线程上执行的的代码 ,实现Runnable接口创建线程,直接创建实现了Run

7、nable接口的类的对象并不能生成线程对象,必须还要定义一个Thread对象,通过使用Thread类的构造函数去新建一个线程, 并将实现Runnable接口的类的对象引用作为参数传递给为Thread类的构造函数,最后通过start( )方法来启动新建线程。基本步骤如下: MyRunnable r =new MyRunnable( ); Thread t= new Thread(r ); r.start;,举例RunnerDemo.java,class MyRunner implements Runnable public void run() String s = Thread.current

8、Thread().getName(); for(int i=1;i=10;i+) System.out.println(s + : + i); public class RunnerDemo public static void main(String args) MyRunner r1=new MyRunner(); Thread t1=new Thread(r1,线程1); Thread t2=new Thread(r1,线程2); t1.start(); t2.start(); for(int i=1;i=10;i+) System.out.println(main 主线程+: +i);

9、 ,线程的管理,线程的状态 线程的优先级 线程的调度 线程的同步,线程的状态,线程在它的生命周期一般具有五种状态,即新建、就绪、运行、堵塞、死亡。,线程的优先级,与Thread类的中和优先级相关的三个静态常量如下: 低优先级:Thread.MIN_PRIORITY,取值为1。 缺省优先级: Thread. NORM_PRIORITY,取值为5。 高优先级:Thread.MAX_PRIORITY,取值为10 。,线程的调度,线程的同步,多个线程序需要共享同一资源,如果此时不去考虑线程之间的协调性,就可能造成运行结果的错误。,举例ATMDemo1.java,class ATMDemo1 publi

10、c static void main(String args) BankAccount visacard= new BankAccount(); ATM 丈夫 = new ATM(丈夫, visacard, 200); ATM 妻子 = new ATM(妻子, visacard, 300); Thread t1 = new Thread(丈夫); Thread t2 = new Thread(妻子); System.out.println(当前帐户余额为: + visacard. getmoney (); t1.start(); t2.start(); class ATM implements

11、 Runnable /模拟ATM机或柜台存钱 BankAccount card; String name; long m; ATM(String n, BankAccount card, long m) this.name = n; this.card = card; this.m = m; ,举例ATMDemo1.java(续),public void run() card.save(name, m); /调用方法存钱 System.out.println( name+存入 +m+ 后,帐户余额为 +card. getmoney (); class BankAccount static lo

12、ng money=1000; /设置帐户中的初始金额 public void save(String s, long m)/存錢 System.out.println(s+存入 +m); long tmpe = money; /获得当前帐户余额 try /模拟存钱所花费的时间 Thread.currentThread().sleep(10); catch(InterruptedException e) money = tmpe + m; /相加之后存回帐户 public long getmoney () /获得当前帐户余额 return money; ,11.3 任务实施 (模仿实践),11.

13、3 任务实施 (模仿实践),例11-7 TestClock.java import java.text.NumberFormat; import java.awt.event.*; import javax.swing.*; public class TestClock implements ActionListener JFrame jf; JButton begin; JButton end; JButton pause; JPanel p1; JLabel clock; ClockDispaly mt; public TestClock() jf = new JFrame(倒计时); b

14、egin = new JButton(开始考试); end = new JButton(结束考试); pause = new JButton(暂停考试); p1=new JPanel(); JLabel clock = new JLabel(); clock.setHorizontalAlignment(JLabel.CENTER); p1.add(begin); p1.add(pause); p1.add(end); jf.add(p1,North); jf.add(clock,Center); jf.setSize(340,180); jf.setLocation(500,300); jf

15、.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); mt = new ClockDispaly(clock,100); /设置考试时间位为100分钟 begin.addActionListener(this); pause.addActionListener(this); end.addActionListener(this); ,public static void main(String args) TestClock test=new TestClock(); public void actionPe

16、rformed(ActionEvent e) String s = e.getActionCommand(); if(s.equals(开始考试) begin.setEnabled(false); mt.start( ); /启动倒计时线程 else if(s.equals(暂停考试) pause.setText(继续考试); mt.suspend(); else if(s.equals(继续考试) pause.setText(暂停考试); mt.resume(); ,else if(s.equals(结束考试) begin.setEnabled(false); pause.setEnabled(false); end.setEnabled(false); p1.setEnabled(false); mt.stop(); System.exi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号