Shared Flashcard Set

Details

CLP
Trabalho sobre concorrência em java
20
Engineering
Graduate
04/16/2014

Additional Engineering Flashcards

 


 

Cards

Term

Como definir e iniciar uma thread implementando Runnable?

Definition
public class HelloRunnable implements Runnable {
    public void run() {
        System.out.println("Hello from a thread!");
    }
    public static void main(String args[]) {
        (new Thread(new HelloRunnable())).start();
    }
}
Term

Como definir e iniciar uma Thread?

Definition

public class HelloThread extends Thread {

    public void run() {

        System.out.println("Hello from a thread!");

    }

    public static void main(String args[]) {

        (new HelloThread()).start();

    }

}

Term

Qual método usado para pausar a execução de uma thread ?

Definition

Thread.sleep faz com que a thread corrente suspenda sua execução por um tempo determinado, em mili ou nanosegundos:

Thread.sleep(4000);

Term

O que significa a declaração throws InterrutedException ?

Definition

É uma exceção que será lançada por sleep caso a thread corrente seja interrompida por uma outra thread enquanto sleep estiver ativo.

Term

O que é o método join?

Definition

O método join permite que uma thread aguarde pelo processamento de outra. Se um objeto t do tipo Thread está sendo executado em uma thread,

t.join();

 

causa a pausa da execução da thread corrente até que t termine o que estiver processando.

Term

O uso de synchronized ajuda a evitar quais tipos de erros em um ambiente multi-thread?

Definition

Interferência de thread e erro de consistência de memória, ao criar uma relação de antecedência entre as declarações. Ou seja, o que uma thread A fizer a um dado x, será visível a uma thread B posteriormente.

Term

Como instanciar métodos sincronizados?

Definition

public class SynchronizedCounter {

    private int c = 0;

    public synchronized void increment() {

        c++;

    }

    public synchronized void decrement() {

        c--;

    }

    public synchronized int value() {

        return c;

    }

}

Term

Como instanciar uma variável inteira atômica?

Definition

Variável inteira iniciada com valor zero:

private AtomicInteger c = new AtomicInteger(0);

Term

Métodos para incrementar e decrementar valores atômicos

Definition

Incremento:

 

c.incrementAndGet();

Decremento:


c.decrementAndGet();

 

Term

Definição de DoubleAdder/LongAdder

Definition

Uma ou mais variáveis que juntas mantém uma soma do tipo double/long iniciada com valor 0.

Term

Novas classes implementadas no Java 8 para melhorar a performance de somadores, contadores em ambiente concorrente.

Definition

DoubleAccumulator, DoubleAdder, LongAccumulator, LongAdder.

Term

Definição de DoubleAccumulator/LongAccumulator

Definition
Uma ou mais variáveis que juntas mantém um valor do tipo double continuamente atualizado usando uma determinada função.
Term

Instância de um dado do tipo LongAdder

Definition

import java.util.concurrent.atomic.LongAdder;

class AtomicCounter {

    private LongAdder c = new LongAdder(0);

}

Term

Implementação de uma Classe LongAdderCounter usando o tipo LongAdder

Definition

class LongAdderCounter {

    private LongAdder c = new LongAdder(0);

    public void increment() {

        c.increment();

    }

    public void decrement() {

        c.decrement();

    }

    public int value() {

        return c.sum();

    }

}

Term

Como fazer uma equivalência de chamada LongAdder(), usando LongAccumulator

Definition

new LongAdder();

É equivalente à:

new LongAccumulator((x, y) -> x + y, 0L);

Term

Definição do método wait().

Definition
Faz com que a thread atual aguarde (suspende seu processamento) até que seja notificada por outra thread.
public synchronized void guardedJoy() { 
while(!joy) { 
try { 
wait(); 
} catch (InterruptedException e) {} 
System.out.println("Joy and efficiency have been achieved!"); 
}
Term

Definição do método notifyAll().

Definition

Desperta todas as threads que estejam aguardando ter acesso a um objeto.

public synchronized notifyJoy() { 
joy = true; 
notifyAll(); 
}


 

Term

Classe de números randômicos utilizada em ambiente multi-thread

Definition

Para acesso concorrente, ao usar a Classe ThreadLocalRandom ao invés de Math.random(), resulta em menos contenção, portanto, melhor performance.

int r = ThreadLocalRandom.current().nextInt(4, 77); 

Term

Definição de lock

Definition

Mecanismo que garante que somente a thread que possuir o lock do objeto terá acesso a este.

Term

Implementação de um lock

Definition

class X {

  private final ReentrantLock lock = new ReentrantLock();

  public void m() {

     lock.lock();  // block until condition holds

     try {

     // ... method body

     } finally {

     lock.unlock()

     }

  }

 

}

Supporting users have an ad free experience!