Java multithreading reads and operates List collections

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));
     }
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324798697&siteId=291194637