package com.pingan.test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class Test implements Runnable{ private List<String> list; private int curtIndex = 0; private int threadNum = 0; public Test(List<String> list) { this.list = list; } @Override public void run() { if(null == list) { return; } int mythreadNum = -1; int myIndex = 0; while(true) { synchronized (this) { myIndex = curtIndex++; if(mythreadNum == -1) { mythreadNum = threadNum++; } } if(myIndex >= list.size()) { break; } try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程" + mythreadNum + "处理" + list.get(myIndex)); } } public static void main(String[] args) { /*List<String> list = new ArrayList<String>(); for(int i = 0; i < 100; i++) { list.add(i + ""); } Test t = new Test(list); ExecutorService pool = Executors.newFixedThreadPool(10); for (int i = 0; i < 10; i++) { pool.submit(t); } pool.shutdown(); try { pool.awaitTermination(Long.MAX_VALUE, TimeUnit.MINUTES); } catch (InterruptedException e) { e.printStackTrace(); }*/ ExecutorService pool = Executors.newFixedThreadPool(5); pool.submit(new Runnable() { @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Test.run 01"); } }); pool.submit(new Runnable() { @Override public void run() { System.out.println("Test.run 02"); } }); } }
转载于:https://my.oschina.net/u/3892666/blog/3097974