package threadPool.java;
import org.junit.Test;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledThreadPoolTest {
@Test
public void scheduleTest(){
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3);
for (int i = 0; i < 10; i++) {
scheduledExecutorService.schedule(new Task(i),2, TimeUnit.SECONDS);
}
System.out.println("exit");
}
@Test
public void scheduleAtFixedRateTest(){
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1,new MyThreadFactory());
scheduledExecutorService.scheduleAtFixedRate(() -> {
String str = Thread.currentThread().getName();
System.out.println(str+" 执行开始 ");
System.out.println(" · ");
try {
// 任务执行 1 秒
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(str+" 执行结束 ");
System.out.println(" · ");
System.out.println(" · ");
// 初始延迟 2 秒,以后每次执行任务延迟 3 秒,上一次执行开始到下一次执行开始的时间为 3 秒
}, 2, 3, TimeUnit.SECONDS);
System.out.println("exit");
}
@Test
public void scheduleWithFixedDelayTest() {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(2,new MyThreadFactory());
scheduledExecutorService.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
String str = Thread.currentThread().getName();
System.out.println(str+" 执行开始 ");
System.out.println(" · ");
try {
// 任务执行 1 秒
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(str+" 执行结束 ");
System.out.println(" · ");
System.out.println(" · ");
System.out.println(" · ");
// 初始延迟 2 秒,外汇跟单gendan5.com以后每次执行任务延迟 3 秒,上一次执行结束到下一次执行开始的时间为 3 秒
}
}, 2, 3, TimeUnit.SECONDS);
System.out.println("exit");
}
@Test
public void newSingleThreadScheduledExecutorTest() {
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(new MyThreadFactory());
scheduledExecutorService.scheduleWithFixedDelay(() -> {
String str = Thread.currentThread().getName();
System.out.println(str+" 执行开始 ");
try {
// 任务执行 1 秒
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(" 执行结束 ");
// 初始延迟 2 秒,以后每次执行任务延迟 3 秒,上一次执行结束到下一次执行开始的时间为 3 秒
}, 2, 3, TimeUnit.SECONDS);
System.out.println("exit");
}
public static void main(String[] args) {
ScheduledThreadPoolTest scheduledThreadPoolTest = new ScheduledThreadPoolTest();
// scheduledThreadPoolTest.scheduleWithFixedDelayTest();
// scheduledThreadPoolTest.scheduleAtFixedRateTest();
scheduledThreadPoolTest.newSingleThreadScheduledExecutorTest();
}
}