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();