@Retention(RUNTIME) @Inherited @Target(TYPE) public @interface Period
イベント注釈で、定期イベントのデフォルト設定値を指定します。
次の例は、Period
注釈を使用して様々な間隔でイベントを発行する方法を示しています。
@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();
}
- 導入されたバージョン:
- 9
-
フィールドのサマリー
-
オプション要素のサマリー
-
フィールド詳細
-
NAME
-
-
要素の詳細
-
value
String value定期的な設定のデフォルト設定値を返します。正の
Long
値とそれに続く空白および次の単位のいずれかの文字列表現。"ns"
(nanoseconds)"us"
(microseconds)"ms"
(milliseconds)"s"
(seconds)"m"
(minutes)"h"
(hours)"d"
(days)
値の例:
"0 ns"
、"10 ms"
および"1 s"
。1つの期間が
"everyChunk"
であり、各レコーディング・ファイルに1回以上出現することを指定する場合もあります。 表示されるイベントの数は、データが記録されるときにファイル・ローテーションが発生する回数によって異なります。- 戻り値:
- デフォルトの設定値であり、
null
ではありません
- デフォルト:
"everyChunk"
-