我有两个函数A、B,要同时启动两个线程来执行。问题:1、启动线程时,记录A、B各自运行了多长时间,并且显示在一个JLabel上。      2、用户要求要每隔一个时间t,重复执行A、B。而且这个t是要可以用户自己设置的,不能写死。
         目前我只会重新启动一个timer对一个函数的运行时间计时,但是这些功能都放在一起,不知道怎么整合。         需要创建几个timer,同时实现运行时间计时、间隔时间t计时?            3、这两个函数都要操作同一个数据库,但是并不操作同一个表,这样是不是不会涉及到 “线程同步”的问题?
按照如上要求,这个timer要自己重新写一个类(里面写方法),还是直接在按钮里写timer的代码?各位高人能否给一个大概的结构?新手,请多多关照,谢谢各位了!
         

解决方案 »

  1.   

    //多线程的应用:时钟
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.text.*;public class TimerDemo extends JFrame {// 窗体类,继承JFrame
    JLabel timer;// 声明标签 public TimerDemo() {
    super("时钟");
    Container c = this.getContentPane();// 得到内容面板
    // c.add(new JLabel());
    timer = new JLabel();
    c.add(timer);// 将timer添加到内容面板中
    timer.setFont(new Font("宋体", Font.BOLD, 120));// 设置字体
    setSize(900, 250);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭按钮
    } public static void main(String args[]) {
    TimerDemo td = new TimerDemo();// 创建窗体对象
    new Timer(td).start();// 创建线程对象,并启动
    }
    }class Timer extends Thread {// 线程类,继承Thread类
    TimerDemo tb;// 以窗体作为其成员 Timer(TimerDemo tb) {// 构造方法
    this.tb = tb;
    } public void run() {// 线程体
    while (true) {
    SimpleDateFormat dateformat = new SimpleDateFormat("hh:mm:ss SSS");
    String s = dateformat.format(new Date());
    tb.timer.setText(s);// 将标签内容设置为可格式化文本
    try {
    sleep(100);// 休眠1秒钟时间
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }
    这是我们上课的一个例子。
    楼主可以参考下。