62,625
社区成员
发帖
与我相关
我的任务
分享 public static List<String> list = Collections.synchronizedList(new ArrayList<>());
private static class Task implements Runnable {
private String string;
public Task(String string) {
this.string = string;
}
@Override
public void run() {
list.add(string);
}
}
public static void main(String[] args) {
int count = 1000 * 10000;
int poolSize = 10;
ExecutorService pool = new ThreadPoolExecutor(poolSize,poolSize, 0L, TimeUnit.MILLISECONDS, new SynchronousQueue(), new ThreadPoolExecutor.CallerRunsPolicy());
for (int i=0; i< count; i++) {
Task task = new Task("a string : \t" + i);
pool.execute(task);
}
pool.shutdown();
System.out.println(list.size());
}
此代码不推荐public static List<String> list = Collections.synchronizedList(new ArrayList<>());
private static class Task implements Runnable {
private CountDownLatch countDownLatch;
private String string;
public Task(CountDownLatch countDownLatch, String string) {
this.countDownLatch = countDownLatch;
this.string = string;
}
@Override
public void run() {
try {
list.add(string);
} finally {
countDownLatch.countDown();
}
}
}
public static void main(String[] args) {
int count = 1000 * 10000;
ExecutorService pool = Executors.newFixedThreadPool(10);
CountDownLatch countDownLatch = new CountDownLatch(count);
for (int i=0; i< count; i++) {
Task task = new Task(countDownLatch, "a string : \t" + i);
pool.submit(task);
}
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
pool.shutdown();
System.out.println(list.size());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ExecutorService service=Executors.newFixedThreadPool(50);
for(int i=0;i<1000*10000;i++) {
Task task=new Task("a string:"+" "+i);
service.execute(task);
}
service.shutdown();
while(!service.isTerminated()){};
System.out.println(list.size());
}