问题描述
|
这个问题已经在这里有了答案:
解决方法
您可以在方法中声明一个类
void Foo(String str) {
class OneShotTask implements Runnable {
String str;
OneShotTask(String s) { str = s; }
public void run() {
someFunc(str);
}
}
Thread t = new Thread(new OneShotTask(str));
t.start();
}
,您可以将其放在函数中。
String paramStr = \"a parameter\";
Runnable myRunnable = createRunnable(paramStr);
private Runnable createRunnable(final String paramStr){
Runnable aRunnable = new Runnable(){
public void run(){
someFunc(paramStr);
}
};
return aRunnable;
}
(使用此参数时,我的参数是整数ID,用于创建ID-> myRunnables的哈希图。这样,我可以使用哈希图在处理程序中发布/删除不同的myRunnable对象。)
,theView.post(new Runnable() {
String str;
@Override
public void run() {
par.Log(str);
}
public Runnable init(String pstr) {
this.str=pstr;
return(this);
}
}.init(str));
创建返回对象本身并使用其初始化参数的init函数。
,我使用以下实现Runnable接口的类。使用此类,您可以轻松地创建带有参数的新线程
public abstract class RunnableArg implements Runnable {
Object[] m_args;
public RunnableArg() {
}
public void run(Object... args) {
setArgs(args);
run();
}
public void setArgs(Object... args) {
m_args = args;
}
public int getArgCount() {
return m_args == null ? 0 : m_args.length;
}
public Object[] getArgs() {
return m_args;
}
}
,您有两种选择:
定义一个命名的类。将您的参数传递给命名类的构造函数。
让您的匿名班级关闭您的“参数”。确保将其标记为“ 4”。
,我首先想知道您要在这里完成什么,需要将一个参数传递给新的Runnable()或run()。
通常的方法应该是拥有一个Runnable对象,该对象通过在启动之前设置成员变量来将data(str)传递到其线程。然后,run()方法使用这些成员变量值来执行someFunc()