Практическое использование AtomicInteger

Много лет назад я преподавал кого-то к программе в C. Осуществление должно было повернуть диаграмму через 90 градусов. Он возвратился с решением, которое заняло несколько минут для завершения, главным образом потому что он использовал, умножается и делится и т.д.

, я показал ему, как переделать проблему с помощью сдвигов разряда, и время для обработки свелось приблизительно к 30 секундам на неоптимизирующем компиляторе, который он имел.

я только что получил оптимизирующий компилятор, и тот же код повернул диаграмму в < 5 секунд. Я посмотрел на ассемблерный код, который компилятор генерировал, и от того, что я видел решенный тут же, что мои дни записи ассемблера были закончены.

214
задан informatik01 21 October 2013 в 00:57
поделиться

1 ответ

Простой пример для compareAndSet () функция:

import java.util.concurrent.atomic.AtomicInteger; 

public class GFG { 
    public static void main(String args[]) 
    { 

        // Initially value as 0 
        AtomicInteger val = new AtomicInteger(0); 

        // Prints the updated value 
        System.out.println("Previous value: "
                           + val); 

        // Checks if previous value was 0 
        // and then updates it 
        boolean res = val.compareAndSet(0, 6); 

        // Checks if the value was updated. 
        if (res) 
            System.out.println("The value was"
                               + " updated and it is "
                           + val); 
        else
            System.out.println("The value was "
                               + "not updated"); 
      } 
  } 

печатное: предыдущее значение: 0 значение было обновлено, и это - 6 Других простых примеров:

    import java.util.concurrent.atomic.AtomicInteger; 

public class GFG { 
    public static void main(String args[]) 
    { 

        // Initially value as 0 
        AtomicInteger val 
            = new AtomicInteger(0); 

        // Prints the updated value 
        System.out.println("Previous value: "
                           + val); 

         // Checks if previous value was 0 
        // and then updates it 
        boolean res = val.compareAndSet(10, 6); 

          // Checks if the value was updated. 
          if (res) 
            System.out.println("The value was"
                               + " updated and it is "
                               + val); 
        else
            System.out.println("The value was "
                               + "not updated"); 
    } 
} 

печатное: Предыдущее значение: 0 значение не было обновлено

0
ответ дан 23 November 2019 в 04:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: