package com.word.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ThreadTest {
public static void main(String[] args) {
//创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程
ExecutorService cache = Executors.newCachedThreadPool();
for(int i = 0; i<10; i++) {
int index = i;
cache.execute(()->System.out.println(index));
}
cache.shutdown();
//创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待
ExecutorService fix = Executors.newFixedThreadPool(2);
for(int i = 0; i<10; i++) {
int x = i;
fix.execute(()->{
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(x);
});
}
fix.shutdown();
//创建一个定长线程池,支持定时及周期性任务执行
//延迟1秒执行
ScheduledExecutorService sche = Executors.newScheduledThreadPool(5);
sche.schedule(()->System.out.println("ok"), 1, TimeUnit.SECONDS);
sche.shutdown();
//延迟1秒,每3秒执行一次
ScheduledExecutorService sche1 = Executors.newScheduledThreadPool(5);
sche1.scheduleAtFixedRate(()->System.out.println("test"), 1,3, TimeUnit.SECONDS);
}
}