日期:2014-05-19  浏览次数:20719 次

多线程 继承Runable接口,怎样将线程运行完后的结果返回到主线程
大家好,我现在做一个项目只能用java 1.4版本,因此没办法用1.5版本中的Callable接口给主线程提供返回值。
  我做的是将各个独立的任务放在多个线程中同时进行,并希望他们在结束后将结果返回到主线程,请问这该怎么做啊,膜拜各路大侠给我指点指点!

------解决方案--------------------
自定义的线程跑玩了就会自动去执行主线程啊!
------解决方案--------------------
自定义回调接口,子线程执行完后通过回调接口调用主线程中的回调方法
------解决方案--------------------
主线程里放一个Hashtable ,业务线程把返回结果放进去,主线程里取。
这样就OK了,另Hashtable是线程安全的,不需要另外加锁
------解决方案--------------------
探讨

引用:
天马行空--- 我的qq的签名也是这个 蛮巧的。

主线程中创建一个数据访问安全的对象A,主线程启动的线程thread2初始化时,A作为thread2的初始化参数,thread2在run方法中把操作结果返回给对象A。

主线程在thread2未完成操作时等待就好了,直到等待的thread2运行结束 进行下步操作。


请问一下,Run……

------解决方案--------------------
汗! 楼主我随便写下 大概是这个思路,我写的是伪代码。
你自己再去改下吧

main(){
Map datas = new Hashedtable();
MyThreadRun run = new MyThreadRun();
run.setDatas(datas);
Thread tt = new Thread(run);
tt.start(); 
  
while(!"result is ok".equal(datas.get("status"))){
try{
Thread.sleep(10000);
}catch(Exception){
//todo
}
}
//或者使用join 具体的看下api 
tt.join();

Object result = run.get("result");
//dosomething
}

static Class MyThreadRun implements Runable{
Hashedtable datas;
public void setData(Map data){ 
this.datas = data;
}

run(){
//execute get the result
this.datas.put("result",result);
this.datas.put("status","result is ok");
}
}