package com.company;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadUtil {
private List<Runnable> runnableList = new ArrayList<>();
private ExecutorService executorService;
private static ThreadUtil threadUtil;
public static ThreadUtil newInstance(){
if (null == threadUtil) {
threadUtil = new ThreadUtil();
}
return threadUtil;
}
private ThreadUtil() {
executorService = Executors.newSingleThreadExecutor();
}
public void submit(Runnable runnable){
runnableList.add(runnable);
}
public void execute(){
System.out.println(runnableList.size());
if (runnableList.size() == 0) {
return;
}
for (int i = 0; i< runnableList.size(); i++) {
executorService.execute(runnableList.get(i));
}
runnableList.clear();
}
}
//runnable的抽象类
package com.company;
abstract class MyRunnable implements Runnable{
@Override
public void run() {
try {
execute();
}catch (Exception e) {
System.out.println(e.getMessage());
}
}
public abstract void execute();
}
===========================================================================
package com.company;
public class MyRunnableImpl extends MyRunnable {
@Override
public void execute() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("asdasd");
}
}
==========================================================================
使用
ThreadUtil threadUtil = ThreadUtil.newInstance(); threadUtil.submit(new MyRunnableImpl()); threadUtil.submit(new MyRunnableImpl()); threadUtil.submit(new MyRunnableImpl()); threadUtil.execute(); threadUtil.execute();
这篇博客探讨了Java中线程池的创建和使用,通过`ThreadUtil`类展示了如何实例化单线程ExecutorService。`MyRunnable`是抽象运行类,其子类`MyRunnableImpl`实现了延迟打印。博客中提交了多个任务到线程池执行,展示了任务的并发执行和清理机制。
425





