大家好,我现在使用多线程的方法,开启若干个线程如5个线程 处理同类型的多个任务,他们处理结束的时间是不同的,但都可以得到一个List类型的处理结果,我现在需要将各个子线程的处理结果在其处理完后返回到主线程(分别或者一起返回均可),用一个更大的List类型变量,将这些子线程的数据统一保存起来,请问这该怎么做谢谢!

解决方案 »

  1.   

    http://xiangkun.javaeye.com/blog/630135
      

  2.   

    补充一下问题,我的项目目前版本只能用Java1.4做,Callable是1.5的函数,目前不支持,希望在使用Runnable接口实现时,也能找到好的方法实现子线程向主线程传递数据!
      

  3.   

    看你之前的帖子,刚回复了,http://topic.csdn.net/u/20100608/14/e4772b37-757f-41b8-8aa8-f7e1c2e2aa17.html?seed=1441256914&r=66088162#r_66088162
    用个  static ConcurrentHashMap<String, list[]>
      

  4.   

    synchronize(biglist)
    {
          biglist.add(smalllist);
    }
      

  5.   

    楼主看看下面的例子,join可以实现你的需求
    package cn.tyb.thread;public class ThreadJoin extends Thread{
    private String type;
    private Object o;
    public ThreadJoin(String type){
    this.type=type;
    }

    public void run(){
    //测试代码
    int i=0;
    while(true){
    if(i>=10){
    break;
    }
    System.out.println(type+": "+i);
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    i++;
    }
    //要放回的值
    o=i;
    }

    public Object get(){
    try {
    //若该线程已经执行完了,则返回o
    this.join();
    return o;
    } catch (InterruptedException e) {
    e.printStackTrace();
    return null;
    }
    }

    public static void main(String[] args) throws InterruptedException{
    ThreadJoin tj1 = new ThreadJoin("A");
    ThreadJoin tj2 = new ThreadJoin("B");
    //这里可以开n个线程
    tj1.start();
    tj2.start();

    //线程开完之后再调用获取返回值的方法
    System.out.println(tj1.get());
    System.out.println(tj2.get());
    }
    }