-1

我有两个班, maintimex。我想在我的timex类中显示一个变量的值,但我总是得到答案 0。

public class mainaxe {

    public static void main (String arg[]) {
        timex n = new timex();

        int n2 = timex.a;
        n.timedel();
        for(int i=0; i<20; i++) {
            System.out.println("the time is :" + n2);

            try {
                Thread.sleep(1000);
            }

            catch (InterruptedException e) {}
        }
    }
}

这是我的timex课:

public class timex extends Thread{
    public static int a;

    public int timedel(){
        for(int i=0; i<200; i++) {
            try {
                Thread.sleep(1000);
                a = a + 5;
            }
            catch (InterruptedException e){}

            // start();
        }
        return a;
    }
}

我想从类中获取值timex并在我的main类中使用它来打印每 1 秒的值。

4

2 回答 2

1

如果你想要一个多线程程序,那么在你的扩展类中Thread,声明一个完全像这样的方法:

@Override
public void run () {
    // in here, put the code your other thread will run
}

现在,在您创建此类的新对象后:

timex n = new timex();

你必须像这样启动线程:

n.start();

这会导致对象开始run在新线程中运行其方法。让你的主线程调用其他方法n不会对新线程做任何事情;主线程调用的任何其他方法都将在主线程中执行。因此,您无法通过函数调用与新线程进行通信。你必须用其他方法来做,比如你试图用你的 variable 做a

于 2013-10-16T22:44:49.147 回答
1

我想你需要类似的东西,

Mainaxe.java

package mainaxe;

public class Mainaxe {

    public static void main(String arg[]) {
        Timex n = new Timex();
        n.start();
//        int n2 = Timex.a;
//        n.timedel();
        for (int i = 0; i < 20; i++) {
            System.out.println("the time is :" + Timex.a);

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
        }
    }
}

Timex.java

package mainaxe;

public class Timex extends Thread {

    public static int a;

    public Timex() {
        super();
    }

    @Override
    public void run() {
        timedel();
    }

    public int timedel() {
        for (int i = 0; i < 200; i++) {
            try {
                Thread.sleep(1000);
                a = a + 5;
            } catch (InterruptedException e) {
            }

            // start();
        }
        return a;
    }
}
于 2013-10-16T22:45:06.033 回答