java.util.concurrent.atomic.LongAccumulator Java Examples

The following examples show how to use java.util.concurrent.atomic.LongAccumulator. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source Project: java-concurrent-programming   Author: guanpengchn   File: LongAccumulatorDemo.java    License: MIT License 6 votes vote down vote up
public static void main(String[] args) throws InterruptedException {
    LongAccumulator accumulator = new LongAccumulator(Long::max, Long.MIN_VALUE);
    Thread[] ts = new Thread[1000];

    for(int i=0;i<1000;i++){
        ts[i] = new Thread(()->{
            Random random = new Random();
            long value = random.nextLong();
            accumulator.accumulate(value);
        });
        ts[i].start();
    }
    for(int i=0;i<1000;i++){
        ts[i].join();
    }
    System.out.println(accumulator.longValue());
}
 
Example #2
Source Project: LearningOfThinkInJava   Author: sean417   File: AccumulatorTest.java    License: Apache License 2.0 6 votes vote down vote up
public static void main(String[] args) throws Exception{
    LongAccumulator accumulator=new LongAccumulator(Long::max,Long.MIN_VALUE);
    Thread[] ts=new Thread[100];

    for(int i=0;i<100;i++){
        ts[i]=new Thread(()->{
            Random random=new Random();
            long value=random.nextLong();
            accumulator.accumulate(value);
        });
        ts[i].start();
    }

    for(int i=0;i<100;i++){
        ts[i].join();
    }
    System.out.println(accumulator.longValue());
}
 
Example #3
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 6 votes vote down vote up
/**
 * accumulates by multiple threads produce correct result
 */
public void testAccumulateAndGetMT() {
    final int incs = 1000000;
    final int nthreads = 4;
    final ExecutorService pool = Executors.newCachedThreadPool();
    LongAccumulator a = new LongAccumulator(Long::max, 0L);
    Phaser phaser = new Phaser(nthreads + 1);
    for (int i = 0; i < nthreads; ++i)
        pool.execute(new AccTask(a, phaser, incs));
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    long expected = incs - 1;
    long result = a.get();
    assertEquals(expected, result);
    pool.shutdown();
}
 
Example #4
Source Project: LearningOfThinkInJava   Author: sean417   File: AccumulatorTest.java    License: Apache License 2.0 6 votes vote down vote up
public static void main(String[] args) throws Exception{
    LongAccumulator accumulator=new LongAccumulator(Long::max,Long.MIN_VALUE);
    Thread[] ts=new Thread[100];

    for(int i=0;i<100;i++){
        ts[i]=new Thread(()->{
            Random random=new Random();
            long value=random.nextLong();
            accumulator.accumulate(value);
        });
        ts[i].start();
    }

    for(int i=0;i<100;i++){
        ts[i].join();
    }
    System.out.println(accumulator.longValue());
}
 
Example #5
Source Project: j2objc   Author: google   File: LongAccumulatorTest.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * accumulates by multiple threads produce correct result
 */
public void testAccumulateAndGetMT() {
    final int incs = 1000000;
    final int nthreads = 4;
    final ExecutorService pool = Executors.newCachedThreadPool();
    LongAccumulator a = new LongAccumulator(Long::max, 0L);
    Phaser phaser = new Phaser(nthreads + 1);
    for (int i = 0; i < nthreads; ++i)
        pool.execute(new AccTask(a, phaser, incs));
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    long expected = incs - 1;
    long result = a.get();
    assertEquals(expected, result);
    pool.shutdown();
}
 
Example #6
Source Project: incubator-pinot   Author: apache   File: QueryScheduler.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * Constructor to initialize QueryScheduler
 * @param queryExecutor QueryExecutor engine to use
 * @param resourceManager for managing server thread resources
 * @param serverMetrics server metrics collector
 */
public QueryScheduler(@Nonnull Configuration config, @Nonnull QueryExecutor queryExecutor,
    @Nonnull ResourceManager resourceManager, @Nonnull ServerMetrics serverMetrics,
    @Nonnull LongAccumulator latestQueryTime) {
  Preconditions.checkNotNull(config);
  Preconditions.checkNotNull(queryExecutor);
  Preconditions.checkNotNull(resourceManager);
  Preconditions.checkNotNull(serverMetrics);

  this.serverMetrics = serverMetrics;
  this.resourceManager = resourceManager;
  this.queryExecutor = queryExecutor;
  this.latestQueryTime = latestQueryTime;
  this.queryLogRateLimiter = RateLimiter.create(config.getDouble(QUERY_LOG_MAX_RATE_KEY, DEFAULT_QUERY_LOG_MAX_RATE));
  this.numDroppedLogRateLimiter = RateLimiter.create(1.0d);
  this.numDroppedLogCounter = new AtomicInteger(0);

  LOGGER.info("Query log max rate: {}", queryLogRateLimiter.getRate());
}
 
Example #7
Source Project: tutorials   Author: eugenp   File: LongAccumulatorUnitTest.java    License: MIT License 6 votes vote down vote up
@Test
public void givenLongAccumulator_whenApplyActionOnItFromMultipleThrads_thenShouldProduceProperResult() throws InterruptedException {
    // given
    ExecutorService executorService = Executors.newFixedThreadPool(8);
    LongBinaryOperator sum = Long::sum;
    LongAccumulator accumulator = new LongAccumulator(sum, 0L);
    int numberOfThreads = 4;
    int numberOfIncrements = 100;

    // when
    Runnable accumulateAction = () -> IntStream.rangeClosed(0, numberOfIncrements).forEach(accumulator::accumulate);

    for (int i = 0; i < numberOfThreads; i++) {
        executorService.execute(accumulateAction);
    }

    // then
    executorService.awaitTermination(500, TimeUnit.MILLISECONDS);
    executorService.shutdown();
    assertEquals(accumulator.get(), 20200);

}
 
Example #8
Source Project: dragonwell8_jdk   Author: alibaba   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #9
Source Project: TencentKona-8   Author: Tencent   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #10
Source Project: native-obfuscator   Author: radioegor146   File: Serial.java    License: GNU General Public License v3.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #11
Source Project: jdk8u60   Author: chenghanpeng   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #12
Source Project: fdb-record-layer   Author: FoundationDB   File: ResolverMappingReplicator.java    License: Apache License 2.0 5 votes vote down vote up
/**
 * Copy the mappings stored in a {@link LocatableResolver} to the specified replica.
 *
 * @param replica The {@link LocatableResolver} to copy to.
 * @return A future that will complete when the copy is finished.
 */
public CompletableFuture<Void> copyToAsync(@Nonnull final LocatableResolver replica) {
    if (!replica.getDatabase().equals(runner.getDatabase())) {
        throw new IllegalArgumentException("copy must be within same database");
    }

    final LongAccumulator maxAccumulator = new LongAccumulator(Long::max, 0L);
    final AtomicInteger counter = new AtomicInteger();
    return copyInternal(replica, maxAccumulator, counter)
            .thenCompose(ignore -> replica.setWindow(maxAccumulator.get()));
}
 
Example #13
Source Project: java-tutorial   Author: jarvisqi   File: ConcurrentMapTest.java    License: MIT License 5 votes vote down vote up
/**
 * LongAccumulator以类型为LongBinaryOperatorlambda表达式构建
 * 而不是仅仅执行加法操作
 */
public void longAccumulatorDemo() {
    ExecutorService executor = Executors.newFixedThreadPool(2);

    LongBinaryOperator op = (x, y) -> 2 * x + y;
    LongAccumulator accumulator = new LongAccumulator(op, 1L);
    IntStream.range(0, 10).forEach(i -> executor.submit(() -> accumulator.accumulate(i)));

    SynchronizationLocks.stopExecutor(executor);
    // => 2539
    System.out.println(accumulator.getThenReset());
}
 
Example #14
Source Project: openjdk-jdk8u   Author: AdoptOpenJDK   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #15
Source Project: openjdk-jdk8u-backup   Author: AdoptOpenJDK   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #16
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #17
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
/**
 * accumulate accumulates given value to current, and get returns current value
 */
public void testAccumulateAndGet() {
    LongAccumulator ai = new LongAccumulator(Long::max, 0L);
    ai.accumulate(2);
    assertEquals(2, ai.get());
    ai.accumulate(-4);
    assertEquals(2, ai.get());
    ai.accumulate(4);
    assertEquals(4, ai.get());
}
 
Example #18
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
/**
 * reset() causes subsequent get() to return zero
 */
public void testReset() {
    LongAccumulator ai = new LongAccumulator(Long::max, 0L);
    ai.accumulate(2);
    assertEquals(2, ai.get());
    ai.reset();
    assertEquals(0, ai.get());
}
 
Example #19
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
/**
 * getThenReset() returns current value; subsequent get() returns zero
 */
public void testGetThenReset() {
    LongAccumulator ai = new LongAccumulator(Long::max, 0L);
    ai.accumulate(2);
    assertEquals(2, ai.get());
    assertEquals(2, ai.getThenReset());
    assertEquals(0, ai.get());
}
 
Example #20
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
/**
 * toString returns current value.
 */
public void testToString() {
    LongAccumulator ai = new LongAccumulator(Long::max, 0L);
    assertEquals("0", ai.toString());
    ai.accumulate(1);
    assertEquals(Long.toString(1), ai.toString());
}
 
Example #21
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
/**
 * intValue returns current value.
 */
public void testIntValue() {
    LongAccumulator ai = new LongAccumulator(Long::max, 0L);
    assertEquals(0, ai.intValue());
    ai.accumulate(1);
    assertEquals(1, ai.intValue());
}
 
Example #22
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
/**
 * longValue returns current value.
 */
public void testLongValue() {
    LongAccumulator ai = new LongAccumulator(Long::max, 0L);
    assertEquals(0, ai.longValue());
    ai.accumulate(1);
    assertEquals(1, ai.longValue());
}
 
Example #23
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
/**
 * floatValue returns current value.
 */
public void testFloatValue() {
    LongAccumulator ai = new LongAccumulator(Long::max, 0L);
    assertEquals(0.0f, ai.floatValue());
    ai.accumulate(1);
    assertEquals(1.0f, ai.floatValue());
}
 
Example #24
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
/**
 * doubleValue returns current value.
 */
public void testDoubleValue() {
    LongAccumulator ai = new LongAccumulator(Long::max, 0L);
    assertEquals(0.0, ai.doubleValue());
    ai.accumulate(1);
    assertEquals(1.0, ai.doubleValue());
}
 
Example #25
Source Project: openjdk-jdk9   Author: AdoptOpenJDK   File: LongAccumulatorTest.java    License: GNU General Public License v2.0 5 votes vote down vote up
public void run() {
    phaser.arriveAndAwaitAdvance();
    LongAccumulator a = acc;
    for (int i = 0; i < incs; ++i)
        a.accumulate(i);
    result = a.get();
    phaser.arrive();
}
 
Example #26
Source Project: jdk8u-jdk   Author: lambdalab-mirror   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #27
Source Project: hottub   Author: dsrg-uoft   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #28
Source Project: openjdk-8-source   Author: keerath   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #29
Source Project: openjdk-8   Author: bpupadhyaya   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}
 
Example #30
Source Project: jdk8u_jdk   Author: JetBrains   File: Serial.java    License: GNU General Public License v2.0 5 votes vote down vote up
static void testLongAccumulator() {
    LongBinaryOperator plus = (LongBinaryOperator & Serializable) (x, y) -> x + y;
    LongAccumulator a = new LongAccumulator(plus, -2);
    a.accumulate(34);
    LongAccumulator result = echo(a);
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value");
    a.reset();
    result.reset();
    if (result.get() != a.get())
        throw new RuntimeException("Unexpected value after reset");

    checkSerialClassName(a, "java.util.concurrent.atomic.LongAccumulator$SerializationProxy");
}