# io.github.libtmux.control.EventSubscription.publisher

- **Module:** io.github.libtmux.control
- **Package:** io.github.libtmux:libtmux
- **Language:** Java
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-java/blob/f56392b5d9bc7f1f9c1631842333fb90f3d82d40/libtmux/src/main/java/io/github/libtmux/control/EventSubscription.java#L406
- **Page:** https://libtmux.org/en/java/latest/reference/io-github-libtmux-control-eventsubscription-eventsubscription-publisher/

```
io.github.libtmux.control.EventSubscription.publisher() -> Flow.Publisher<Delivery<T>>

io.github.libtmux.control.EventSubscription.publisher(executor: Executor) -> Flow.Publisher<Delivery<T>>
```

A {@link Flow.Publisher} view of this subscription's steps, delivered as demand allows.

Reads that wait for the next step run on a fresh virtual thread, started only while a
subscriber has outstanding demand, so a subscriber that never asks never blocks anything. Use
{@link #publisher(Executor)} to read somewhere else instead.

@see #publisher(Executor)

## Parameters

- `executor` (`Executor`): where each blocking read for the subscriber runs; one that runs a task on the calling thread makes {@link Flow.Subscription#request request} block on tmux, which the Reactive Streams rules forbid (for `publisher(executor)`)
