任务设计考试系统中的倒计时.ppt

上传人:本田雅阁 文档编号:2586177 上传时间:2019-04-13 格式:PPT 页数:24 大小:683.51KB
返回 下载 相关 举报
任务设计考试系统中的倒计时.ppt_第1页
第1页 / 共24页
任务设计考试系统中的倒计时.ppt_第2页
第2页 / 共24页
任务设计考试系统中的倒计时.ppt_第3页
第3页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《任务设计考试系统中的倒计时.ppt》由会员分享,可在线阅读,更多相关《任务设计考试系统中的倒计时.ppt(24页珍藏版)》请在三一文库上搜索。

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

2、Java利用线程技术可以实现时间的动态刷新和显示,从而可以实现时间的同步显示。,11.2 技术要点,线程的创建 线程的管理,程序,进程,多线程,程序 (Program) 储存于外存中的可执行文件 Program 进程 (Process) 载入内存中的可执行文件称为 Process 线程 (Thread) Process 中的一段程式码执行轨迹称为 Thread,是计算机中最小的执行单位。,HDD,Memory,Program,Process,Thread,线程和进程,线程和进程的主要差别体现在如下两个方面: (1)同样作为基本的执行单元,线程的划分比进程小。 (2)每个进程都有一段专用的内存区

3、域。与此相反,线程却共享内存单元(包括代码和数据),通过共享的内存单元来实现数据交换、实时通信与必要的同步操作。,线程的创建,Java中提供了两种创建线程的方法 扩展Thread类 实现Runnable接口来创建线程。 其中Thread类和Runnable接口都定义在包java.lang中。,扩展Thread类创建线程,创建和执行线程步骤,步骤一、 创建一个Thread类的子类,该类必须重写Thread类的run( )方法。 class 类名称 extends Thread /从Thread类扩展出子类 成员变量; 成员方法; public void run() /重写Thread类的run(

4、 )方法 线程处理的代码 步骤二、 创建该子类的对象,即创建一个新的线程。创建线程对象时会自动调用Thread类定义的相关构造函数。 步骤三、 用构造函数创建新对象之后,这个对象中的有关数据被初始化,从而进入线程的新建状态。直到调用了该对象的strat()方法。 步骤四、线程对象开始运行,并自动调用相应的run()方法。,举例 ThreadDemo1.java,class MyThread extends Thread public void run() for(int i=1;i=10;i+) System.out.println(this.getName()+“: “+i); public

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

6、id 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().getName()+“: “+i); ,实现Runnable接口创建线程,Java提供了Runnable接口来完成创建线程的操作。在Runnable接口中,只包含一个抽象的run( )方法。 public interface Runnable publi

7、c abstract void run( ) 利用Runnable接口创建线程,首先定义一个实现Runnable接口的类,在该类中必须定义run( )方法的实现代码。 class MyRunnable implements Runnable public void run() /新建线程上执行的的代码 ,实现Runnable接口创建线程,直接创建实现了Runnable接口的类的对象并不能生成线程对象,必须还要定义一个Thread对象,通过使用Thread类的构造函数去新建一个线程, 并将实现Runnable接口的类的对象引用作为参数传递给为Thread类的构造函数,最后通过start( )方法

8、来启动新建线程。基本步骤如下: MyRunnable r =new MyRunnable( ); Thread t= new Thread(r ); r.start;,举例 RunnerDemo.java,class MyRunner implements Runnable public void run() String s = Thread.currentThread().getName(); for(int i=1;i=10;i+) System.out.println(s + “: “ + i); public class RunnerDemo public static void m

9、ain(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); ,线程的管理,线程的状态 线程的优先级 线程的调度 线程的同步,线程的状态,线程在它的生命周期一般具有五种状态,即新建、就绪、运行、堵塞、死亡。,线程的优先级,与Thread类的中和优先级相关的三个静态常量如下:

10、低优先级:Thread.MIN_PRIORITY,取值为1。 缺省优先级: Thread. NORM_PRIORITY,取值为5。 高优先级:Thread.MAX_PRIORITY,取值为10 。,线程的调度,线程的同步,多个线程序需要共享同一资源,如果此时不去考虑线程之间的协调性,就可能造成运行结果的错误。,举例 ATMDemo1.java,class ATMDemo1 public static void main(String args) BankAccount visacard= new BankAccount(); ATM 丈夫 = new ATM(“丈夫“, visacard, 2

11、00); 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 Runnable /模拟ATM机或柜台存钱 BankAccount card; String name; long m; ATM(String n, BankAccount card, long m)

12、 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 long money=1000; /设置帐户中的初始金额 public void save(String s, long m) /存錢 System.out.println(s+“存入 “+m);

13、 long tmpe = money; /获得当前帐户余额 try /模拟存钱所花费的时间 Thread.currentThread().sleep(10); catch(InterruptedException e) money = tmpe + m; /相加之后存回帐户 public long getmoney () /获得当前帐户余额 return money; ,11.3 任务实施 (模仿实践),11.3 任务实施 (模仿实践),例11-7 TestClock.java import java.text.NumberFormat; import java.awt.event.*; im

14、port 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(“倒计时“); begin = new JButton(“开始考试“); end = new JButton(“结束考试“); pause = new JButton(“暂停考试“); p1=new

15、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.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); mt = new Cl

16、ockDispaly(clock,100); /设置考试时间位为100分钟 begin.addActionListener(this); pause.addActionListener(this); end.addActionListener(this); ,public static void main(String args) TestClock test=new TestClock(); public void actionPerformed(ActionEvent e) String s = e.getActionCommand(); if(s.equals(“开始考试“) begin

17、.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(); Sys

18、tem.exit(0); class ClockDispaly extends Thread private JLabel lefttimer; private JLabel totaltimer; private int testtime;,public ClockDispaly(JLabel lt,int time) lefttimer = lt; testtime = time*60; public void run( ) NumberFormat f = NumberFormat.getInstance(); /返回整数部分允许显示的最小整数位数 f.setMinimumInteger

19、Digits(2); int h,m,s; while (testtime = 0) h = testtime /3600; m = testtime %3600/60; s = testtime %60; StringBuffer sb = new StringBuffer(“); sb.append(“考试剩余时间: “+f.format(h) + “: “ + f.format(m)+ “: “ + f.format(s); lefttimer.setText(sb.toString(); try Thread.sleep(1000); catch (Exception ex) testtime = testtime - 1; JOptionPane.showMessageDialog(null,“t考试时间到,结束考试!“); System.exit(0); ,11.3 任务实施 (模仿实践),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1