多线程 读取List

import  java.util.ArrayList;
import  java.util.List;
import  org.apache.commons.lang3.ArrayUtils;
 
public  class  Test_4 {
     /**
      * 多线程处理list
     
      * @param data  数据list
      * @param threadNum  线程数
      */
     public  synchronized  void  handleList(List data,  int  threadNum) {
         int  length = data.size();
         int  tl = length % threadNum ==  0  ? length / threadNum : (length
                 / threadNum +  1 );
 
         for  ( int  i =  0 ; i < threadNum; i++) {
             int  end = (i +  1 ) * tl;
             HandleThread thread =  new  HandleThread( "线程["  + (i +  1 ) +  "] " ,  data, i * tl, end > length ? length : end);
             thread.start();
         }
     }
 
     class  HandleThread  extends  Thread {
         private  String threadName;
         private  List data;
         private  int  start;
         private  int  end;
 
         public  HandleThread(String threadName, List data,  int  start,  int  end) {
             this .threadName = threadName;
             this .data = data;
             this .start = start;
             this .end = end;
         }
 
         public  void  run() {
             // TODO 这里处理数据
             data.subList(start, end).add( "^&*" );
             System.out.println(threadName)
         }
 
     }
 
     public  static  void  main(String[] args) {
         Test_4 test =  new  Test_4();
         // 准备数据
         List data =  new  ArrayList();
         for  ( int  i =  0 ; i <  5000 ; i++) {
             data.add( "item"  + i);
         }
         test.handleList(data,  5 );
         System.out.println(ArrayUtils.toString(data));
     }
}

你可能感兴趣的:(web,java,web,多线程)