1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| import cn.hutool.core.date.DateUtil; import junit.framework.TestCase;
import java.util.concurrent.*;
public class TestJug extends TestCase {
public void testNewCachedThreadPool() throws InterruptedException { ExecutorService executorService = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; executorService.execute(() -> { // 获取线程名称,默认格式:pool-1-thread-1 System.out.println(DateUtil.now() + " " + Thread.currentThread().getName() + " " + index); // 等待2秒 sleep(TimeUnit.SECONDS,2); }); } executorService.awaitTermination(3, TimeUnit.SECONDS); }
public void testNewFixedThreadPool() throws InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(5); for (int i = 0; i < 10; i++) { final int index = i; executorService.execute(() -> { // 获取线程名称,默认格式:pool-1-thread-1 System.out.println(DateUtil.now() + " " + Thread.currentThread().getName() + " " + index); // 等待2秒 sleep(TimeUnit.SECONDS,2); }); } executorService.awaitTermination(3, TimeUnit.SECONDS);
}
public void testNewSingleThreadPool() throws InterruptedException { ExecutorService executorService = Executors.newSingleThreadExecutor(); for (int i = 0; i < 10; i++) { final int index = i; executorService.execute(() -> { // 获取线程名称,默认格式:pool-1-thread-1 System.out.println(DateUtil.now() + " " + Thread.currentThread().getName() + " " + index); // 等待1秒 sleep(TimeUnit.MILLISECONDS,1000); }); } executorService.awaitTermination(11, TimeUnit.SECONDS);
}
public void testNewScheduledThreadPool() throws InterruptedException { ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3); System.out.println(DateUtil.now() + " 提交任务"); for (int i = 0; i < 10; i++) { final int index = i; executorService.execute(() -> { // 获取线程名称,默认格式:pool-1-thread-1 System.out.println(DateUtil.now() + " " + Thread.currentThread().getName() + " " + index); // 等待1秒 sleep(TimeUnit.SECONDS,1); }); }
executorService.awaitTermination(6, TimeUnit.SECONDS);
}
public void testCreateThreadPool() throws InterruptedException { //阻塞队列和拒绝策略根据实际情况可自行选择 ExecutorService executorService = new ThreadPoolExecutor(2, 10, 1, TimeUnit.MINUTES, new ArrayBlockingQueue<>(5, true), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy()); for (int i = 0; i < 10; i++) { final int index = i; executorService.execute(() -> { // 获取线程名称,默认格式:pool-1-thread-1 System.out.println(DateUtil.now() + " " + Thread.currentThread().getName() + " " + index); // 等待2秒 sleep(TimeUnit.SECONDS,2); }); } executorService.awaitTermination(5, TimeUnit.SECONDS); }
private void sleep(TimeUnit timeUnit,int time){ try { timeUnit.sleep(time); } catch (InterruptedException e) { e.printStackTrace(); } } }
|