package chat.message; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MessageRunner { private static final Logger LOG = LoggerFactory.getLogger(MessageRunner.class); //private ScheduledExecutorService mScheduledExecutorService = Executors.newScheduledThreadPool(10); private ScheduledExecutorService executor; private final AtomicInteger runCounter; public MessageRunner(ScheduledExecutorService executor) { this.runCounter = new AtomicInteger(); this.executor = executor; } // private ThreadFactory threadFactory = new ThreadFactory() { // @Override // public Thread newThread(final Runnable r) { // return new Thread() { // @Override // public void run() { // r.run(); // } // }; // } // }; public void execute(Runnable task) { int startCount = runCounter.incrementAndGet(); LOG.debug("Submit task and current task count {}", startCount); final long startTime = System.currentTimeMillis(); executor.execute(() -> { try { task.run(); } finally { int endCount = runCounter.decrementAndGet(); LOG.debug("Finish task and current task count {} use time {}", endCount, System.currentTimeMillis()-startTime); } }); } public void shutdown() { executor.isShutdown(); } // public void publishToMembers(MessageRecord message, List memberList, User sender) { // mScheduledExecutorService.schedule(threadFactory.newThread(new Runnable() { // @Override // public void run() { // exeMessage(user); // } // }), 100, TimeUnit.MILLISECONDS); // } }