Skip to content

Latest commit

 

History

History

README.md

eternalcode-commons-loom

Virtual Thread scheduler for Java 21+. Core module - platform-agnostic.

Dependency

// Gradle
implementation("com.eternalcode:eternalcode-commons-loom:1.3.1")
<!-- Maven -->
<dependency>
    <groupId>com.eternalcode</groupId>
    <artifactId>eternalcode-commons-loom</artifactId>
    <version>1.3.1</version>
</dependency>

Repository: https://repo.eternalcode.pl/releases

Usage

// Create with custom dispatcher
LoomScheduler scheduler = new LoomSchedulerImpl(myDispatcher);

// Async (VT) -> transform (VT) -> sync (main thread)
scheduler.supplyAsync(() -> database.load(id))
    .thenApply(data -> transform(data))
    .thenAcceptSync(result -> player.sendMessage(result))
    .exceptionally(e -> logger.severe(e.getMessage()));

Rules

  • runAsync, supplyAsync, thenApply → Virtual Thread
  • runSync, thenAcceptSync, thenApplySync → Main Thread
  • Never call Bukkit API from async
  • Never use join() or get() on futures

See also