在Java中向Thread类添加函数

时间:2015-01-20 11:58:07

标签: java multithreading

我已经编写了一个简单的时钟类来模拟时间我需要它与其他线程同时运行所以我使它成为线程我有一些额外的方法可以在我的系统中使用时间单位但是现在我已经改变了它是一个线程系统我似乎无法掌握它们。

这是时钟类的代码

public class Clock extends Thread {
    private Integer seconds;
    private Integer minute;
    private Integer hour;

    public Clock()
    {
        setClock(0,0,0);
    }

    public void setClock(int hr, int min, int sec)
    {
        if(0 <= hr && hr < 24)
        {
            hour = hr;
        }
        else
        {
            hour = 0;
        }

        if(0 <= min && min < 60)
        {
            minute = min;
        }
        else
        {
            minute = 0;
        }

        if(0 <= sec && sec < 60)
        {
            seconds = sec;
        }
        else
        {
            seconds = 0;
        }
    }

    public void tick()
    {
        this.seconds += 5;

        this.minute += (int)(this.seconds/60);

        this.seconds = this.seconds % 60;

        this.hour += (int)(this.minute/60);

        this.minute = this.minute % 60;

        this.hour = this.hour % 24;

    }

    public int getMin()
    {
        return this.minute;
    }

    public int getHour()
    {
        return this.hour;
    }

    public String getTime()
    {
        return minute.toString() + "m" + seconds.toString() + "s";
    }

    public void run()
    {
        tick();
    }

}

运行上面的三个函数是导致我找到解决方案的问题,但找不到一个我认为'extends'就像继承一样,它会将这些方法添加到Thread中。

这是线程声明

Thread clock1 = new Clock();

我以正常的方式启动它然后加入,因为我正在运行多个线程。

Thread TestJunc4 = new CarPark(100,TestTemp4,clock1);

我将线程传递给需要它的其他线程,然后尝试进行这样的调用,我只是给出了声明的顶部,因为其余部分看起来并不重要。

while(clock.getHour() != 1)

问题是我不能调用getget方法,比如'getHour'我正在使用net bean,当我得到它们没有显示在其中的函数列表时,如果我添加它们手动我得到错误它无法找到它们。

1 个答案:

答案 0 :(得分:3)

您的Clock类正在扩展Thread。因此,Clock的实例也是一个线程。 这意味着无处不在,java api期望一个线程可以传递你的时钟对象。但是当你需要特殊的方法时。你必须把它作为时钟传递。

Clock clock1 = new Clock();