1 /* 2 * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.jfr; 27 28 import java.lang.annotation.ElementType; 29 import java.lang.annotation.Inherited; 30 import java.lang.annotation.Retention; 31 import java.lang.annotation.RetentionPolicy; 32 import java.lang.annotation.Target; 33 34 /** 35 * Event annotation, specifies the duration below which an event is 36 * not recorded (for example, {@code "20 ms"}). 37 * 38 * @since 9 39 */ 40 @MetadataDefinition 41 @Target({ ElementType.TYPE }) 42 @Inherited 43 @Retention(RetentionPolicy.RUNTIME) 44 public @interface Threshold { 45 /** 46 * Setting name {@code "threshold"} for configuring event thresholds. 47 */ 48 public final static String NAME = "threshold"; 49 50 /** 51 * The threshold (for example, {@code "20 ms"})s. 52 * <p> 53 * A string representation of a positive {@code Long} value followed by an 54 * empty space and one of the following units:<br> 55 * <br> 56 * {@code "ns"} (nanoseconds)<br> 57 * {@code "us"} (microseconds)<br> 58 * {@code "ms"} (milliseconds)<br> 59 * {@code "s"} (seconds)<br> 60 * {@code "m"} (minutes)<br> 61 * {@code "h"} (hours)<br> 62 * {@code "d"} (days)<br> 63 * <p> 64 * Example values are {@code "0 ns"}, {@code "10 ms"}, and {@code "1 s"}. 65 * 66 * @return the threshold, default {@code "0 ns"}, not {@code null} 67 */ 68 String value() default "0 ns"; 69 }