一、单循环
package com.example.test; import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.util.concurrent.*; public class Test { public static void main(String[] args) { ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build(); ExecutorService executorService = new ThreadPoolExecutor(10, 20, 200L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), namedThreadFactory); try { for (int i=0;i<200;i++) { executorService.execute(() -> { try { System.out.println("线程名称:" + Thread.currentThread().getName() ); // 这里处理你的业务 System.out.println("这里写业务代码,耗时3秒"); Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } }); } } catch (Exception e) { System.out.println("报错了" + e); } finally { //关闭 executorService.shutdown(); } } }
二、内循环
package com.example.test;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.util.concurrent.*;
public class Test {
public static void main(String[] args) {
try {
for (int i=0;i<10;i++) {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build();
ExecutorService executorService = new ThreadPoolExecutor(10, 20, 200L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), namedThreadFactory);
try {
for (int j = 0; j < 20; j++) {
executorService.execute(() -> {
try {
System.out.println("线程名称:" + Thread.currentThread().getName() );
// 这里处理你的业务
System.out.println("这里写业务代码,耗时3秒");
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
} catch (Exception e) {
e.printStackTrace();
} finally {
executorService.shutdown(); //线程关闭在for循环外
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}