1

isALive と join メソッドを使用しようとしていますが、シンボルが見つからないなどのエラーがスローされます....このプログラムの正確な場所を教えてください。結合メソッドの使用法は何ですか。スレッドが終了するのを待つことは知っていますが、詳細が必要です。

class newthread1 implements Runnable {
    newthread1() {
        Thread t = new Thread(this, "FirstThread");
        System.out.println("Child Thread:" + t);
        t.start();
    }

    public void run() {
        System.out.println("We are in processing for 1st thread");
        int p = 1000, t = 3;
        double r = 3.5, si;
        try {
            si = (p * r * t) / 100;
            System.out.println("Simple Interest:" + si);
        } catch (ArithmeticException e) {
            System.out.println("Error:" + e);
        }
    }
}

class newthread2 implements Runnable {

    newthread2() {
        Thread t = new Thread(this, "SecondThread");
        System.out.println("Child Thread:" + t);
        t.start();
    }

    public void run() {
        try {
            System.out.println("We are in processing for 2nd thread");
            double a, r = 4.3;
            int p = 1000, n = 3;
            double temp = Math.pow((1 + r / 100), n);
            a = temp * p;
            System.out.println("Compound interest:" + a);
        } catch (ArithmeticException e) {
            System.out.println("Error:" + e);
        }
    }
}

class mainthread {
    public static void main(String args[]) {
        newthread1 t11 = new newthread1();
        new newthread2();
        boolean b = t1.t.isAlive();
        System.out.println("Thread is alive:" + b);
        t1.t.join();
    }
}   
4

5 に答える 5

1

Java でスレッドを作成するには、 1. インターフェイス を実装する方法が 2 つあります。 2.クラスを拡張することにより。
Runnable
Thread

インターフェイスを実装する場合は、オブジェクトを コンストラクターRunnableに渡す必要がありますRunnableThread

オブジェクトがスレッドの動作を取得するようにします。

クラスを拡張する場合は、拡張されたクラスThreadのオブジェクトを作成する必要がありますThread
オブジェクトがスレッドの動作を取得するようにします。

しかし、あなたは上記の 2 つの方法のいずれにも従っていません。

あなたのコードでは、ステートメントnewthread1 t11 = new newthread1();は単純なオブジェクト
ではなく、Thread object. しかし、その上でメソッド
を呼び出そうとすると、コンパイル エラーが発生します。 Threadnormal object

エラーを回避するには、上記の 2 つの方法のいずれかに従う必要があります。
より具体的には 、このステートメントに
置き換える必要がありますnewthread1 t11 = new newthread1();

 Thread thread = new Thread(new newthread1());//first way implements Runnable

class newthread1 implements Runnable{またはこのステートメント に置き換えます

class newthread1 extends Thread implements Runnable{//second way extends Thread
于 2013-07-29T07:11:30.457 に答える
0

isALive を使用しようとしています

そのような方法はありません。ということisAlive()ですか?

メソッドを結合しますが、シンボルが見つからないなどのエラーをスローします

おそらくスペルミスによるコンパイルエラーです。コンパイル エラーは「スロー」ではなく出力されます。

このプログラムの正確な場所を教えてください。

コンパイラはすでにそれを行っていますが、ここには投稿していません。エラー サイトを見つけるためだけに、他の誰かがあなたのプログラムを再コンパイルすることを期待している場合は、長い間待つことをお勧めします。

結合メソッドの使用法は何ですか。スレッドが終了するのを待つことは知っていますが、詳細が必要です。

詳細はJavadocにあります。ここで引用することもできますが、率直に言って、あなたがすでに読んでいるはずのポイントがわかりません. わからないことがあれば、質問にその旨を記載するべきでした。

于 2013-07-29T07:03:22.020 に答える