モジュール jdk.management.resource
パッケージ jdk.management.resource

クラスThrottledMeter

  • すべての実装されたインタフェース:
    ResourceMeter, ResourceRequest


    public class ThrottledMeter
    extends NotifyingMeter
    ThrottledMeterでは、帯域幅制限、オプションの親からのリクエストおよび割当てに対する承認者のコールバックを指定します。 レートはスロットル制限で制限し、いつでも設定できます。 1秒当たりのレートは、毎秒承認可能な量です。 毎秒使用されなかった量は、最大で1秒になるまで累積されます。
    導入されたバージョン:
    8u40
    • メソッドの詳細

      • create

        public static ThrottledMeter create​(ResourceType type,
                                            long ratePerSec,
                                            ResourceApprover approver)
        スロットル・レートと承認者を持つ新しいメーターを作成します。
        パラメータ:
        type - ResourceType
        ratePerSec - 許可されたスロットル・レート(バイト/秒)。ゼロ(0)よりも大きい必要があります
        approver - 通知対象のResourceApprover (nullも可)
        戻り値:
        新しいThrottledMeter
        例外:
        IllegalArgumentException - ratePerSecがゼロ(0)以下の場合
      • create

        public static ThrottledMeter create​(ResourceType type,
                                            ResourceRequest parent,
                                            ResourceApprover approver)
        無制限のレート、親および承認者を持つ新しいメーターを作成します。
        パラメータ:
        type - ResourceType
        parent - リクエスト元のResourceRequest (nullも可)
        approver - 通知対象のResourceApprover (nullも可)
        戻り値:
        新しいThrottledMeter
        例外:
        IllegalArgumentException - ratePerSecがゼロ(0)以下の場合
      • create

        public static ThrottledMeter create​(ResourceType type,
                                            long ratePerSec,
                                            ResourceRequest parent,
                                            ResourceApprover approver)
        スロットル・レート、親および承認者を持つ新しいメーターを作成します。
        パラメータ:
        type - ResourceType
        ratePerSec - 許可されたスロットル・レート(バイト/秒)。ゼロ(0)よりも大きい必要があります
        parent - リクエスト元のResourceRequest (nullも可)
        approver - 通知対象のResourceApprover (nullも可)
        戻り値:
        新しいThrottledMeter
        例外:
        IllegalArgumentException - ratePerSecがゼロ(0)以下の場合
      • validate

        public long validate​(long previous,
                             long amount,
                             ResourceId id)
        量を検証します。 量を返す場合は、そのまま返します。 スロットリングは、トークン・バケットのようなアルゴリズムによって実現します。 割当て量には、リクエストを満たすためにただちに処理される量を超える容量が保持されます。 最大割当て量は、現在の1秒当たりのレートで2秒分の量です。 リクエストによって要求された量分ずつ割当て量が減少します。 割当て量が最初から正の値である場合、リクエストはただちに処理されます。 割当て量が負の値の場合、割当て量は時間の経過に応じて補充されるので、正の値に戻るまで待機します。 複数のスレッドが割当て量をめぐって競合している場合、通常のスレッド・スケジュールと同期化プリミティブによって順序が左右されます。

        InterruptedExceptionが発生すると、ゼロ(0)が返されて、検証に失敗します。

        リソース使用のスロットリングは、基礎となるリソース実装から分離されており、リソース使用率は変更ずに、リソース使用の開始のみを遅らせます。

        オーバーライド:
        validate 、クラス:  NotifyingMeter
        パラメータ:
        amount - リクエストされた量
        id - リソース・インスタンスのResourceId(nullも可)
        previous - 以前のメーター値
        戻り値:
        承認された値
      • getCurrentRate

        public final long getCurrentRate​()
        現在の推定レート(量/秒)を返します。
        戻り値:
        現在の推定レート(量/秒)
      • getRatePerSec

        public final long getRatePerSec​()
        現在のスロットル・レート(/秒)を返します。
        戻り値:
        現在のスロットル・レート(/秒)
      • setRatePerSec

        public final long setRatePerSec​(long ratePerSec)
        スロットル・レート(/秒)を設定します。
        パラメータ:
        ratePerSec - レート/秒。ゼロ(0)よりも大きい必要があります
        戻り値:
        以前のスロットル・レート(/秒)
        例外:
        IllegalArgumentException - ratePerSecがゼロ(0)以下の場合
      • toString

        public String toString​()
        次のクラスからコピーされた説明: SimpleMeter
        メーターの文字列表現を返します。
        オーバーライド:
        toString 、クラス:  SimpleMeter
        戻り値:
        メーターの文字列表現