JAVA动态打开多个线程

本文介绍了一种使用多线程技术批量处理在线数据的方法,通过动态调整线程数量来提高处理效率。此方法适用于大数据量场景,实现数据的快速加载和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 //多线程保存在线数据
 public boolean invokeThreadMethod(List list){
  int num = 1000;   //定 义每个线程执行的数据量
  List thdList = null;
  Thread thread = null;
  boolean flag = false;  
  
  //根据数据量确定开多少个线程  
  int temp = list.size()/num;
  int begin = 0;
  int end = 0;
  
  //判断数据量是否小于num
  if(temp == 0){
   thread = new Thread(new MyThread(list));
   MyThread.threadList.add(thread);
   thread.start();
  }
  
  //根据数据量动态打开多线程
  for(int i=0;i<temp;i++){
   begin = i*num;
   
   if(i == (temp-1)){
    end = list.size();
   }else{
    end = i*num+num;
   }
   thdList = new ArrayList();
   for(int j=begin;j<end;j++){
    thdList.add((Httz)list.get(j));
   }
   thread = new Thread(new MyThread(thdList));
   MyThread.threadList.add(thread);
   thread.start();
  }
  
  //判断所有线程是否都执行完毕
  while (true) {
   List<Thread> threadList = MyThread.threadList;
   for(int i=0;i<threadList.size();i++){
    if(!((Thread)threadList.get(i)).isAlive()){
     threadList.remove(i);
    }
   }   
   
   if(threadList.size()==0){
    flag = true;
    break;
   }
  }  
  return flag;
 }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值