2

Threadを実装するというクラスを作成しましたが、何らかの理由でまたはメソッドをRunnable呼び出すことができません。そうしようとすると、これらのメソッドがクラスに対して未定義であるというエラーが表示され、作成するよう提案されます。そこで、新しいプロジェクトを作成し、サンプル コードをコピーして、自分のコードに何か問題があるかどうかを確認しましたが、同じエラーが発生しました。サンプルコードは次のとおりです。start()sleep()

class Thread implements Runnable {
    private int a;
    public Thread (int a) {
        this.a = a;
    }
    public void run() {
        for (int i = 1; i <= a; ++i) {
            System.out.println(Thread.currentThread().getName() + " is " + i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {}
        }
    }
}

これは私自身のコードです:

public class Thread extends PID implements Runnable {
    public Thread() {};                      // Empty constructor for thread object
    public void run() {
        Random gen = new Random();           // Generates random values
        int sleepTime;                       // Sleep time
        sleepTime = gen.nextInt(60 - 1) + 1; // Generates random sleep time between 1 and 60 seconds
        try {
            Thread.sleep();
        } catch (Exception e) {
            System.out.println(e);
        } 
        System.out.println("The thread has been terminated");
    }
}
4

3 に答える 3

8

クラスがクラスを隠しているため、現在のエラーを修正するには、単にクラスの名前を変更Threadします。MyThreadThreadjava.lang.Thread

に固執したい場合は、次のようThreadに完全修飾名を使用する必要があります。java.lang.Thread

try{
    java.lang.Thread.sleep(1000);
    // ...
于 2013-06-10T14:33:56.153 に答える
0

インターフェイス Runnable にはメソッド start() と sleep() がないため、注意してください。インターフェイス Runnable には run() メソッドのみがあり、Java API は「 run() メソッドのみをオーバーライドし、他の Thread メソッドをオーバーライドしない場合は、Runnable インターフェイスを使用することをお勧めします。」ここで Java API の Runnable ドキュメントを参照してください

于 2015-01-25T00:14:06.197 に答える