The following example shows how the Period
annotation can be used
to emit events at different intervals.
@Period("1 s") @Name("Counter") class CountEvent extends Event { int count; } @Period("3 s") @Name("Fizz") class FizzEvent extends Event { } @Period("5 s") @Name("Buzz") class BuzzEvent extends Event { } var counter = new AtomicInteger(); FlightRecorder.addPeriodicEvent(CountEvent.class, () -> { CountEvent event = new CountEvent(); event.count = counter.incrementAndGet(); event.commit(); }); FlightRecorder.addPeriodicEvent(FizzEvent.class, () -> { new FizzEvent().commit(); }); FlightRecorder.addPeriodicEvent(BuzzEvent.class, () -> { new BuzzEvent().commit(); }); var sb = new StringBuilder(); var last = new AtomicInteger(); var current = new AtomicInteger(); try (var r = new RecordingStream()) { r.onEvent("Counter", e -> current.set(e.getValue("count"))); r.onEvent("Fizz", e -> sb.append("Fizz")); r.onEvent("Buzz", e -> sb.append("Buzz")); r.onFlush(() -> { if (current.get() != last.get()) { System.out.println(sb.isEmpty() ? current : sb); last.set(current.get()); sb.setLength(0); } }); r.start(); }
Modifier and Type | Field and Description |
---|---|
public static final String | NAME
Settings name |
Modifier and Type | Method and Description |
---|---|
public String | Returns: the default setting value, notnull Returns the default setting value for a periodic setting. |
NAME | back to summary |
---|---|
public static final String NAME Settings name |
value | back to summary |
---|---|
public String value() Returns the default setting value for a periodic setting.
String representation of a positive
Example values:
A period may also be
|