From 60cbec2119e9eb51fedad6c0946c424a98c9b8fc Mon Sep 17 00:00:00 2001 From: Daniil Date: Sat, 4 Aug 2018 23:46:58 +0700 Subject: [PATCH] Changed runner blocking mechanism --- .../mc/core/events/runner/ExecutorThread.java | 10 ++++++++-- .../core/events/runner/ResourceRunnable.java | 12 +++++------ .../mc/core/events/EventExecutorTest.java | 20 +++---------------- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/event-loop/src/main/java/mc/core/events/runner/ExecutorThread.java b/event-loop/src/main/java/mc/core/events/runner/ExecutorThread.java index 4c12b26..9797fde 100644 --- a/event-loop/src/main/java/mc/core/events/runner/ExecutorThread.java +++ b/event-loop/src/main/java/mc/core/events/runner/ExecutorThread.java @@ -1,5 +1,7 @@ package mc.core.events.runner; +import java.util.concurrent.locks.Lock; + public class ExecutorThread extends Thread { private EventExecutorService service; @@ -23,11 +25,15 @@ public class ExecutorThread extends Thread { } void executeTask(ResourceRunnable runnable) { - runnable.lock(); + for (Lock lock : runnable.getLocks()) { + lock.lock(); + } try { runnable.run(); } finally { - runnable.unlock(); + for (Lock lock : runnable.getLocks()) { + lock.unlock(); + } } runnable.after(); } diff --git a/event-loop/src/main/java/mc/core/events/runner/ResourceRunnable.java b/event-loop/src/main/java/mc/core/events/runner/ResourceRunnable.java index 74d9528..3a7c54e 100644 --- a/event-loop/src/main/java/mc/core/events/runner/ResourceRunnable.java +++ b/event-loop/src/main/java/mc/core/events/runner/ResourceRunnable.java @@ -1,12 +1,12 @@ package mc.core.events.runner; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.locks.Lock; + public interface ResourceRunnable extends Runnable { - default void lock() { - - } - - default void unlock() { - + default List getLocks() { + return Collections.emptyList(); } default void after() { diff --git a/event-loop/src/test/java/mc/core/events/EventExecutorTest.java b/event-loop/src/test/java/mc/core/events/EventExecutorTest.java index 871f02e..99556de 100644 --- a/event-loop/src/test/java/mc/core/events/EventExecutorTest.java +++ b/event-loop/src/test/java/mc/core/events/EventExecutorTest.java @@ -1,7 +1,6 @@ package mc.core.events; import mc.core.events.runner.EventExecutorService; -import mc.core.events.runner.ResourceRunnable; import org.junit.Assert; import org.junit.Test; @@ -17,22 +16,9 @@ public class EventExecutorTest { CountDownLatch latch = new CountDownLatch(1); EventExecutorService service = new EventExecutorService(1); service.start(); - service.addTask(new ResourceRunnable() { - @Override - public void lock() { - - } - - @Override - public void unlock() { - - } - - @Override - public void run() { - testVariable.set(true); - latch.countDown(); - } + service.addTask(() -> { + testVariable.set(true); + latch.countDown(); }); latch.await(1, TimeUnit.SECONDS);