package Ġcom . atlassian . performance . tools . jv mt ask s . api Ċ Ċ import Ġjava . time . Duration Ċ import Ġjava . util . Random Ċ import Ġkotlin . math . absolute Value Ċ Ċ /** Ċ Ġ* ĠBack s Ġoff Ġfor Ġa Ġrandom Ġduration , Ġat Ġmost Ġ[ max ]. Ċ Ġ* Ċ Ġ* Ġ@ since Ġ 1 . 1 . 0 Ċ Ġ* Ġ@ constructor Ġ@ since Ġ 1 . 2 . 0 Ċ Ġ*/ Ċ class ĠJ itter Backoff ( ĊĠĠĠ Ġprivate Ġval Ġmax : ĠDuration , ĊĠĠĠ Ġprivate Ġval Ġrandom : ĠRandom Ċ ) Ġ: ĠBack off Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 . 1 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( max : ĠDuration ) Ġ: Ġthis ( max , ĠRandom ()) ĊĊĠĠĠ Ġoverride Ġfun Ġback Off ( attempt : ĠInt ): ĠDuration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrandom Millis Ġ= Ġrandom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. next Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. rem ( max . to Millis ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠDuration . of Millis ( random Millis ) ĊĠĠĠ Ġ} Ċ } Ċ