Period (Java SE 25 & JDK 25)
Description: declaration: module: jdk.jfr, package: jdk.jfr, annotation type: Period
Keywords: jdk.jfr.Period class

# Annotation Interface Period

@Retention(RUNTIME) @Inherited @Target(TYPE) public @interface Period
Event annotation, specifies the default setting value for a periodic event.

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();
    }

Since:
  9

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `NAME`
  Settings name `"period"` for configuring periodic events

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `String`
  `value`
  Returns the default setting value for a periodic setting.

- ## Field Details

  - ### NAME

    static final String NAME
    Settings name `"period"` for configuring periodic events
    See Also:
      - Constant Field Values

- ## Element Details

  - ### value

    String value
    Returns the default setting value for a periodic setting.

    String representation of a positive `Long` value followed by an empty space and one of the following units:
    `"ns"` (nanoseconds)
    `"us"` (microseconds)
    `"ms"` (milliseconds)
    `"s"` (seconds)
    `"m"` (minutes)
    `"h"` (hours)
    `"d"` (days)

    Example values: `"0 ns"`, `"10 ms"`, and `"1 s"`.

    A period may also be `"everyChunk"` to specify that it occurs at least once for every recording file. The number of events that are emitted depends on how many times the file rotations occur when data is recorded.

    Returns:
      the default setting value, not `null`
    Default:
      `"everyChunk"`