0

私はこの標準コンストラクタを使用しています:

   new Thread(myRunnable);

ここで、myRunnable は Runnable インターフェイスを持つカスタム オブジェクトです。

スレッドプロセス中に、その実行可能なオブジェクトにアクセスする必要があります (プロセスのステータスと進行状況を通知するため)。どうすればよいですか?

オブジェクトがスレッドの場合、次を使用します。

   (MyThread) Thread.getCurrentThread()

しかし、パラメーターとして渡された runnable では、それを取得できません。

編集

これは私のコード構造です:

public abstract class ProgressThread{
    private float progress;     //... progress getter, setter...    
}

public class MyRunnable extends ProgressThread implements Runnable{
    public void run(){
        //starting processes...
        Job1 j1=new Job1().do();
        Job1 j2=new Job2().do();
    }

    private class Job1(){
        for(int i=0;i<10;i++){
            // do something
            float progress=i/10;
            // set job progress in thread
            Thread.getCurrentThread().getRUNNABLE().setProgress(progress);
        }
    }

}

これが getRUNNABLE() メソッド (または回避策!) が必要な理由です。ありがとう。

4

1 に答える 1

6

必要なときにアクセスできるように、ランナブルへの参照を保持するだけです

Runnable myRunnable = ...
new Thread(myRunnable).start();

// do what you wish with the runnable
myRunnable.foo();
于 2012-09-29T10:47:57.613 に答える