多线程问题--传值、运行时间

最近学多线程的时候发现重写run()方法的时候,没办法传值,然后利用 构造注入,实现了线程的传值

public class ClirntAchieve implements Runnable{

    private List<Qxconfigur> jmOrCqList ;
    private String beginDate ;
    private String endDate ;
    List<Map> resultlist = new ArrayList<>();
    public ClirntAchieve( List<?> list,String beginDate,String endDate){
        this.jmOrCqList = (List<Qxconfigur>) list;
        this.beginDate = beginDate;
        this.endDate = endDate;
    }
     @Override
        public void run()  
        { 
         BigDataController bc = new BigDataController();
         resultlist = bc.resultcqBigdata(jmOrCqList, beginDate, endDate);
         for(Map qf:resultlist) {
             Client.allTableList.add(qf);
         }
        
        }  
}

这样就能用了。

还有一个坑

多线程执行的时候会有一定的时间,有时候线程没有执行完就会执行下一行代码,这时候我们需要判断下线程是否执行完,例子如下:

try {
   Client client = new Client(jmOrCqList, beginDate, endDate);
   while (true) {
   if(){

    break;

     }
    }

   }
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

猜你喜欢

转载自www.cnblogs.com/aresblank/p/9386390.html