자바 빅 데이터 분할 + 스 레 드 처리

2251 단어 자바
배경: 데이터 가 큰 것 을 고려 하면 시간 이 초 과 됩 니 다.
해결 방법: 1. 먼저 데 이 터 를 분할 하고 2. 스 레 드 비동기 처리 에 가입 합 니 다.
코드 는 다음 과 같 습 니 다:
public static void main(String[] args) {
   //1.      
   List> batchList = this.splitListToList(ids,500);
   //           ,    500
   for (List list : batchList) {
   //2.      ,         。
   AsyncThreadPool.getInstance().execute(new Runnable() {

   @Override public void run() {

   try {
        //        
      } catch (Exception e) {
       logger.error("  :",e);
      }
   }
  }
}
}
/**
 *    list     list
 * @param list            list
 * @param splitSize           
 * @return          list    List  
 */
public static  List> splitListToList(List list, int splitSize) {
    List> listBatch= new ArrayList>();

    int listSize = list.size();
    int batchSize = listSize / splitSize;      //    
    if (listSize % splitSize > 0) {
        batchSize += 1;
    }

    for (int i = 0; i < batchSize; i++) {
        int start = i * splitSize;
        int end = (i + 1) * splitSize;
        if (end > listSize) {
            end = listSize;
        }
        List batchList = list.subList(start, end);
        listBatch.add(batchList);
    }
    return listBatch;
}

/**
 *          10   
 */
public class AsyncThreadPool {
    protected final Logger logger = Logger.getLogger(getClass());

    private static AsyncThreadPool asyncThreadPool = null;
    private static ExecutorService threadPool = null;

    private AsyncThreadPool(){
        int processors = 10;
        logger.info("   :" + processors + "      ");
        threadPool = Executors.newFixedThreadPool(processors);
    }

    public final static AsyncThreadPool getInstance(){
        if(asyncThreadPool == null){
            asyncThreadPool = new AsyncThreadPool();
        }
        return asyncThreadPool;
    }

    public void execute(Runnable thread){
        threadPool.execute(thread);
    }

    public void submit(Runnable thread){
        threadPool.submit(thread);
    }
}



호 남 에 오신 것 을 환영 합 니 다. 호 남 사람들 은 심 천 - 자바 군: 557651502

좋은 웹페이지 즐겨찾기