diff --git a/src/org/redkale/net/WorkThread.java b/src/org/redkale/net/WorkThread.java index c80a87598..150903f81 100644 --- a/src/org/redkale/net/WorkThread.java +++ b/src/org/redkale/net/WorkThread.java @@ -25,8 +25,8 @@ public class WorkThread extends Thread { this.setDaemon(true); } - public void submit(Runnable runner) { - executor.submit(runner); + public Future submit(Runnable runner) { + return executor.submit(runner); } public ExecutorService getExecutor() { diff --git a/src/org/redkale/service/AbstractService.java b/src/org/redkale/service/AbstractService.java new file mode 100644 index 000000000..e561b39f0 --- /dev/null +++ b/src/org/redkale/service/AbstractService.java @@ -0,0 +1,32 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.service; + +import java.util.concurrent.*; +import org.redkale.net.WorkThread; + +/** + * + * @author zhangjx + */ +public abstract class AbstractService implements Service { + + protected Future submit(Runnable runner) { + Thread thread = Thread.currentThread(); + if (thread instanceof WorkThread) { + return ((WorkThread) thread).submit(runner); + } + return ForkJoinPool.commonPool().submit(runner); + } + + protected ExecutorService getExecutor() { + Thread thread = Thread.currentThread(); + if (thread instanceof WorkThread) { + return ((WorkThread) thread).getExecutor(); + } + return ForkJoinPool.commonPool(); + } +}