From a57574dd104e8470f4afd4a2d6849043feb4b246 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Thu, 30 Mar 2017 23:19:54 +0800 Subject: [PATCH] --- src/org/redkale/net/WorkThread.java | 4 +-- src/org/redkale/service/AbstractService.java | 32 ++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 src/org/redkale/service/AbstractService.java 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(); + } +}