package concurrent.threadPool;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
//可重用固定线程数的线程池,附加任务队列中等待
Executor executor = Executors. newFixedThreadPool(10);
//单个worker线程的Executor
Executor executor2 = Executors. newSingleThreadExecutor();
//可根据需要创建新线程的线程池,调用execute将重用以前构造的线程,
//移除并从缓存中一处那些已有60秒未被使用的线程
Executor executor3 = Executors. newCachedThreadPool();
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("task over");
}
};
executor.execute(task);
executor = Executors. newScheduledThreadPool(10);
ScheduledExecutorService scheduler = (ScheduledExecutorService) executor;
// scheduler.scheduleAtFixedRate(task, 10, 2, TimeUnit.SECONDS);
ExecutorService executorService = (ExecutorService) executor;
while (executorService.isShutdown()) {
try {
executorService.execute(task);
try {
executorService.awaitTermination(300, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (RejectedExecutionException e) {
}
}
executorService.shutdown();
}
}
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
//可重用固定线程数的线程池,附加任务队列中等待
Executor executor = Executors. newFixedThreadPool(10);
//单个worker线程的Executor
Executor executor2 = Executors. newSingleThreadExecutor();
//可根据需要创建新线程的线程池,调用execute将重用以前构造的线程,
//移除并从缓存中一处那些已有60秒未被使用的线程
Executor executor3 = Executors. newCachedThreadPool();
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("task over");
}
};
executor.execute(task);
executor = Executors. newScheduledThreadPool(10);
ScheduledExecutorService scheduler = (ScheduledExecutorService) executor;
// scheduler.scheduleAtFixedRate(task, 10, 2, TimeUnit.SECONDS);
ExecutorService executorService = (ExecutorService) executor;
while (executorService.isShutdown()) {
try {
executorService.execute(task);
try {
executorService.awaitTermination(300, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (RejectedExecutionException e) {
}
}
executorService.shutdown();
}
}