import java.util.Date;
import java.lang.Thread;
public class ThreadTimer { public static void main(String[] args)  {
MyThread Thread = new MyThread();
Thread.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Thread.interrupt();
}

}
class MyThread extends Thread{
public void run(){
System.out.print("时间为"+new Date()+" ");
while(true){
try {
MyThread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
return;
}

}
}
}
提示class MyThread extends Thread{
中MyThread 已经被定义,还是找不到原因。我想要的结果是每1s显示一次时间,5s时结束。此外运行结果为何输入的只有时间而没有我加的“时间为”

解决方案 »

  1.   

    你这些类,是不是都没有包的?那么很可能跟你以前所开发的某个类同名了,就报错了,建议改成ThreadTimer的内部类,大致如下(没时间帮你排版了。):import java.util.Date;
    import java.lang.Thread;
    public class ThreadTimer {public static void main(String[] args) {
    MyThread Thread = new MyThread();
    Thread.start();
    try {
    Thread.sleep(5000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    Thread.interrupt();
    }static class MyThread extends Thread{
    public void run(){
    System.out.print("时间为"+new Date()+" ");
    while(true){
    try {
    MyThread.sleep(1000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    return;
    }}
    }
    }}
      

  2.   

    MyThread 已经被定义    是你classpath路径下已经有了这个类
    至于只打印了一次时间,是
    public void run() {
    System.out.print("时间为" + new Date() + " ");
    while (true) {
    try {
    MyThread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    return;

    }

    }
    }
    抛异常了,然后又return;那肯定只打印一次了。异常处理还是要的
      

  3.   

    想要的结果是每1s显示一次时间,5s时结束。下面的方法可以实现
    public void run() {
        for (int i = 0; i < 5; i++) {
    try {
        System.out.println("时间为"+new Date()+" ");
        Thread.sleep(1000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
        e.printStackTrace();
    }

         }
    }
      

  4.   

    我的目的不是设计一个新的方法,而是想要找出我那个错的MyThread问题的原因
      

  5.   


    class MyThread extends Thread
    {
    public void run()
    {
    //System.out.print("时间为"+new Date()+" ");
    while(true)
    {
    System.out.print("时间为"+new Date()+" ");//放在循环里面.
    try
            {
    MyThread.sleep(1000);
    }
            catch (InterruptedException e) 
    {
    // TODO Auto-generated catch block
    return;
    } }
    }
    }
    另外尽量把对象名的首字母小写,比如:MyThread Thread = new MyThread();最好改成:MyThread thread = new MyThread();
      

  6.   

    这是什么意思?编译错误还是什么?
    这个原因是因为你的System.out.println()写在while循环体外了吧!
        public void run() {
            //System.out.print("时间为" + new Date() + " "); // 这是循环体之外
            while (true) {
                System.out.print("时间为" + new Date() + " "); // 建议应该写在这里
                try {
                    MyThread.sleep(1000);
                } catch (InterruptedException e) {
                    return;
                }
            }
        }
      

  7.   

     那个是编译错误提示,我说的是中文的意思,此外,很纳闷执行有重名的MyThread的那个程序居然运行结果正确,即1s显示1次,一共显示5s。当放到新建的project时没有个提示了,这个理解了。不过运行的结果居然不是1s显示1次,一共显示5s了。