星空网 > 软件开发 > Java

初学多线程练习1

  模拟一个电子时钟,它可以在任何时候被启动或者停止,并可以独立的运行。

1.定义一个Clock类。它继承Label类,并实现Runnable接口。这个类中有一个Thread类型的clocker域,以及start()和run()方法。在run()方法中,每隔一秒就把系统时间显示为label的文本。

 1 class Clock extends Label implements Runnable 2 { 3   //定义Thread类型的clocker域 4   public Thread clocker=null; 5   public Clock() 6   { 7      8     //初始化时,把label设置为当前系统时间 9     //调用toString方法转化为String类型10     setText(new Date().toString());11   }12   //控制线程的启动13   public void start()14   {15     if(clocker==null)16     {17       //clocker通过Thread类构造方法得到的对象进行初始化,并将Clock类的当前对象作为参数18       clocker=new Thread(this);19       clocker.start();20     }21 22   }23   //控制线程的停止24   public void stop()25   {26     clocker=null;27   }28   //实现Runnable接口中的run()方法29   public void run()30   {31     Thread currentThread=Thread.currentThread();32     //判断clocker是否是当前运行的线程33     while(clocker==currentThread)34     {35            setText(new Date().toString());36            try37            {   //休眠1s钟38                clocker.sleep(1000);39       }40       catch (InterruptedException ie)41       {42         System.out.println("Thread error:"+ie);43       }44     }45   46   }47 48 }

2.定义一个ClockFrame类。它继承Frame类,并实现ActionListener接口。在这个类中定义start和stop按钮来控制电子时钟的运行。并且这个类有一个Clock类的域,把这个Clock类对象添加到ClockFrame类中显示。

 1 public class ClockFrame extends Frame implements ActionListener 2 { 3   private Button start=new Button("Start"); 4   private Button stop=new Button("Stop"); 5   private Clock c=new Clock(); 6   public ClockFrame() 7   { 8     super("电子时钟"); 9     //设置窗体使用流式布局10     setLayout(new FlowLayout());11     //添加按钮并且为其注册**12     add(start);13     start.addActionListener(this);14     add(stop);15     stop.addActionListener(this);16     //使用继承WindowAdapter的匿名内部类来实现窗口的关闭17     addWindowListener(new WindowAdapter()18     {19       public void windowClosing(WindowEvent we)20       {System.exit(0);}21     });22     add(c);23     //使构件在窗口中得到合理的安排。24     pack();25     setVisible(true);26 27 28   }29   //通过调用Clock对象中的方法,实现对事件的响应。30   public void actionPerformed(ActionEvent ae)31   {32     if(ae.getSource()==start)33     {34       c.start();35     }36     else37       if(ae.getSource()==stop)38       c.stop();39 40   }41   public static void main(String[] args)42   {43     new ClockFrame();44   }45 }

3、运行:

初学多线程练习1

注:

需要导入的类:

import java.awt.*;import java.awt.event.*;import java.util.Date;





原标题:初学多线程练习1

关键词:线程

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

市场容量解读,选品的第四层探索 :https://www.goluckyvip.com/news/211219.html
市场容量解读,选品的第四层探索 :https://www.xlkjsw.com/news/85106.html
靠“撸铁”年赚上亿元,健身达人在亚马逊美国卖龙门架,年销量狂飙150%!:https://www.kjdsnews.com/a/1838644.html
注意!澳洲港口或将再次中断运营!:https://www.kjdsnews.com/a/1838645.html
单日GMV增长173%!TikTok Shop沙特斋月大促破纪录:https://www.kjdsnews.com/a/1838646.html
单日GMV增长173%!TikTok Shop沙特斋月大促破纪录:https://www.goluckyvip.com/news/211220.html
九月初新疆旅游服装搭配(新疆游玩必备衣服清单):https://www.vstour.cn/a/408257.html
黄果树瀑布景区景点 - 黄果树瀑布景区景点分布图:https://www.vstour.cn/a/408258.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流