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 回答