我是多线程的新手,
我目前正致力于将参数传递给线程。
public class MyRunnable<T> implements Runnable{
protected T obj;
public MyRunnable(){
obj= null;
}
@Override
public void run(){
//do something
}
public void setObj(T obj){
this.obj=obj;
}
public T getObj(){
return obj;
}
}
我尝试使用指定任务
初始化MyRunnable obj在公共无效运行中,就像这样。
someMethod(new MyRunnable<someType>(){
public void run(){
// do some jobs 1.
// do some jobs 2.
}
});
我想将此runnable对象用于具有不同obj值的不同线程, 那么可以使用相同的run方法制作深层副本吗?
提前致谢!
编辑: 原始的MyRunnable()。run()什么都不做,而且任务是在匿名块中实现的,是否可以使用相同的run()方法制作副本?
答案 0 :(得分:0)
您可以制作复制构造函数
public MyRunnable(MyRunnable myRunnable) {
this.fieldA = myRunnable.fieldA;
this.felddB = myRunnable.fieldB;
// etc
}
因为您正在使用其他对象(所有其他字段都相同),请修改构造函数以反映此
public MyRunnable(T obj, MyRunnable myRunnable) {
this.obj = obj;
this.fieldA = myRunnable.fieldA;
this.felddB = myRUnnable.fieldB;
// etc
}
答案 1 :(得分:0)
您可以创建一个返回特定类型的MyRunnable的方法:
public MyRunnable<SomeType> getRunnableForSomePurpose(){
return new MyRunnable<SomeType>(){
public void run(){
//do some jobs
}
}
}
每次需要具有该特定运行方法的MyRunnable时调用该方法:
someMethod(getRunnableForSomePurpose());