001    package org.shiftone.jrat.util;
002    
003    
004    import org.shiftone.jrat.util.log.Logger;
005    
006    
007    /**
008     * Before there was java.util.concurrent.atomic.AtomicLong, there was
009     * org.shiftone.jrat.util.Sequence. This class was since renamed to make it
010     * obvious what it does. This class does synchronize, while AtomicLong uses a
011     * magic native method. This class supports Java 1.4.
012     *
013     * @author jeff@shiftone.org (Jeff Drost)
014     */
015    public class AtomicLong {
016    
017        private static final Logger LOG = Logger.getLogger(AtomicLong.class);
018        private long value;
019    
020        public AtomicLong() {
021            value = 0;
022        }
023    
024    
025        public AtomicLong(long initialValue) {
026            value = initialValue;
027        }
028    
029    
030        public synchronized long get() {
031            return value;
032        }
033    
034    
035        public long incrementAndGet() {
036            return addAndGet(1);
037        }
038    
039    
040        public synchronized long addAndGet(long delta) {
041    
042            value += delta;
043    
044            return value;
045        }
046    
047    
048        public String toString() {
049            return String.valueOf(value);
050        }
051    }