1// 2// ======================================================================== 3// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. 4// ------------------------------------------------------------------------ 5// All rights reserved. This program and the accompanying materials 6// are made available under the terms of the Eclipse Public License v1.0 7// and Apache License v2.0 which accompanies this distribution. 8// 9// The Eclipse Public License is available at 10// http://www.eclipse.org/legal/epl-v10.html 11// 12// The Apache License v2.0 is available at 13// http://www.opensource.org/licenses/apache2.0.php 14// 15// You may elect to redistribute this code under either of these licenses. 16// ======================================================================== 17// 18 19package org.eclipse.jetty.util; 20 21import java.util.concurrent.atomic.AtomicInteger; 22import java.util.concurrent.atomic.AtomicLong; 23 24public class Atomics 25{ 26 private Atomics() 27 { 28 } 29 30 public static void updateMin(AtomicLong currentMin, long newValue) 31 { 32 long oldValue = currentMin.get(); 33 while (newValue < oldValue) 34 { 35 if (currentMin.compareAndSet(oldValue, newValue)) 36 break; 37 oldValue = currentMin.get(); 38 } 39 } 40 41 public static void updateMax(AtomicLong currentMax, long newValue) 42 { 43 long oldValue = currentMax.get(); 44 while (newValue > oldValue) 45 { 46 if (currentMax.compareAndSet(oldValue, newValue)) 47 break; 48 oldValue = currentMax.get(); 49 } 50 } 51 52 public static void updateMin(AtomicInteger currentMin, int newValue) 53 { 54 int oldValue = currentMin.get(); 55 while (newValue < oldValue) 56 { 57 if (currentMin.compareAndSet(oldValue, newValue)) 58 break; 59 oldValue = currentMin.get(); 60 } 61 } 62 63 public static void updateMax(AtomicInteger currentMax, int newValue) 64 { 65 int oldValue = currentMax.get(); 66 while (newValue > oldValue) 67 { 68 if (currentMax.compareAndSet(oldValue, newValue)) 69 break; 70 oldValue = currentMax.get(); 71 } 72 } 73} 74