summaryrefslogtreecommitdiff
path: root/src/main/java/bench/LogWorker.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bench/LogWorker.java')
-rw-r--r--src/main/java/bench/LogWorker.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/main/java/bench/LogWorker.java b/src/main/java/bench/LogWorker.java
new file mode 100644
index 0000000..5a9edfc
--- /dev/null
+++ b/src/main/java/bench/LogWorker.java
@@ -0,0 +1,51 @@
+package bench;
+
+import org.apache.logging.log4j.Logger;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+
+public class LogWorker implements Runnable {
+ private final Logger logger;
+ private final String message;
+ private final CountDownLatch startLatch;
+ private final AtomicBoolean running;
+ private final AtomicLong eventCounter;
+ private final AtomicLong targetEvents;
+ private final BenchConfig.Mode mode;
+
+ public LogWorker(Logger logger, String message, CountDownLatch startLatch,
+ AtomicBoolean running, AtomicLong eventCounter,
+ AtomicLong targetEvents, BenchConfig.Mode mode) {
+ this.logger = logger;
+ this.message = message;
+ this.startLatch = startLatch;
+ this.running = running;
+ this.eventCounter = eventCounter;
+ this.targetEvents = targetEvents;
+ this.mode = mode;
+ }
+
+ @Override
+ public void run() {
+ try {
+ startLatch.await();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ return;
+ }
+
+ if (mode == BenchConfig.Mode.DURATION) {
+ while (running.get()) {
+ logger.info(message);
+ eventCounter.incrementAndGet();
+ }
+ } else {
+ while (running.get() && eventCounter.get() < targetEvents.get()) {
+ logger.info(message);
+ eventCounter.incrementAndGet();
+ }
+ }
+ }
+}