java--執行緒池--建立執行緒池的幾種方式與執行緒池操作詳解
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();
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2781133/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 執行緒池的五種狀態及建立執行緒池的幾種方式執行緒
- 執行緒池建立的幾種方式執行緒
- 執行緒池以及四種常見執行緒池執行緒
- 執行緒池建立方式執行緒
- 執行緒池建立執行緒的過程執行緒
- Java執行緒池二:執行緒池原理Java執行緒
- java建立執行緒池的幾中方式Java執行緒
- 多執行緒【執行緒池】執行緒
- 執行緒和執行緒池執行緒
- 執行緒 執行緒池 Task執行緒
- java多執行緒與併發 - 執行緒池詳解Java執行緒
- 詳解執行緒池的作用及Java中如何使用執行緒池執行緒Java
- Java執行緒池詳解Java執行緒
- Java 執行緒池詳解Java執行緒
- 執行緒池執行緒
- 執行緒與執行緒池的那些事之執行緒池篇(萬字長文)執行緒
- Android程式框架:執行緒與執行緒池Android框架執行緒
- java執行緒池趣味事:這不是執行緒池Java執行緒
- 執行緒池的建立和使用,執行緒池原始碼初探(篇一)執行緒原始碼
- Java提供的幾種執行緒池Java執行緒
- Python執行緒池與程式池Python執行緒
- 多執行緒之手撕執行緒池執行緒
- kuangshenshuo-多執行緒-執行緒池執行緒
- java多執行緒9:執行緒池Java執行緒
- 二. 執行緒管理之執行緒池執行緒
- Android多執行緒之執行緒池Android執行緒
- 詳解Java執行緒池的ctl(執行緒池控制狀態)【原始碼分析】Java執行緒原始碼
- 執行緒池見解執行緒
- 執行緒池管理(1)-為什麼需要執行緒池執行緒
- Java多執行緒-執行緒池的使用Java執行緒
- 使用CreateThreadPool建立執行緒池thread執行緒
- SpringBoot執行緒池和Java執行緒池的實現原理Spring Boot執行緒Java
- Java執行緒池Java執行緒
- ThreadPool執行緒池thread執行緒
- 執行緒池 Executor執行緒
- Android執行緒池Android執行緒
- java 執行緒池Java執行緒
- Java 中執行緒池的7種建立方式!Java執行緒