Skip to content

fizzed/executors

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Executors by Fizzed

Maven Central

Java 8 Java 11 Java 17 Java 21

Linux x64 MacOS arm64 Windows x64

Fizzed, Inc. (Follow on Twitter: @fizzed_inc)

Executors by Fizzed helps you build, manage, and operate long-lived workers (threads) on the JVM.

Java's standard ExecutorService and its various implementations (correctly) hide where and how your Runnable is executing. They are designed to abstract the run() method.

However, when building long-lived tasks, where some parts of your code are critical to not be interrupted (e.g. during a graceful shutdown). That's where the lack of context within your run() of how you're executing becomes a problem. This usually consists of waiting for work and being able to prevent shutdown until that work is completed.

This framework is a simple layer built on top of the ExecutorService to give your Workers the context and building blocks for rock-solid long-lived tasks.

Pattern 1: poll and accept next job (e.g. Blocking Queue)

while (!stopped) {
    job = pollAndAcceptNextJob()   // <-- critical start

if (job) {
        // handle job
}			       // <-- critical end

    sleep(2 seconds)               // <-- interrupt ok
}

Pattern 2: poll then accept next job (e.g. JMS w/ manual ack)

while (!stopped) {
    job = pollNextJob()            // <-- interrupt ok

    if (job) {
    // accept job (ack it)     // <-- critical start
        // handle job
    }                              // <-- critical end

    sleep(2 seconds)               // <-- interrupt ok
}

Usage

In your pom.xml add the following dependency:

<dependency>
  <groupId>com.fizzed</groupId>
  <artifactId>executors-core</artifactId>
  <version>0.0.5</version>
</dependency>

License

Copyright (C) 2025 Fizzed, Inc.

This work is licensed under the Apache License, Version 2.0. See LICENSE for details.

About

Long-lived tasks and workers on the JVM

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages