package com.gfk.thread;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
/**
* @创建人 yfc
* @创建时间 2019\4\15 0015
* @描述
*/
public class ThreadPool {
public static void main(String[] args) {
//1、可缓存的线程池,重复利用
ExecutorService newCachedThreadPool=Executors.newCachedThreadPool();
for(int i=0;i<10;i++){
int temp=i;
newCachedThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+":"+temp);
}
});
}
System.out.println("************************************************");
//2、可固定长度的线程池
ExecutorService newFixedThreadPool=Executors.newFixedThreadPool(3);
for (int i=0;i<10;i++){
int temp=i;
newFixedThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+":"+temp);
}
});
}
//3、可定时线程池
ScheduledExecutorService newScheduledThreadPool= Executors.newScheduledThreadPool(3);
for (int i=0;i<10;i++){
int temp=i;
newScheduledThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+":"+temp);
}
});
}
//4、单线程
ScheduledExecutorService newSingleThreadScheduledExecutor=Executors.newSingleThreadScheduledExecutor();
for (int i=0;i<10;i++){
int temp=i;
newSingleThreadScheduledExecutor.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ",i:" + temp);
}
});
}
}
}