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<string> data,  int  threadNum) {</string>
  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<string> data;</string>
  private  int  start;
  private  int  end;
  public  HandleThread(String threadName, List<string> data,  int  start,  int  end) {</string>
  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<string> data =  new  ArrayList<string>();</string></string>
  for  ( int  i =  0 ; i <  5000 ; i++) {
  data.add( "item"  + i);
  }
  test.handleList(data,  5 );
  System.out.println(ArrayUtils.toString(data));
  }
}
 
  
  
  
 
 
  
 
 
 