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
|
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
|
Definition
Mecanismo que garante que somente a thread que possuir o lock do objeto terá acesso a este. |
|
|
Term
|
Definition
class X {
private final ReentrantLock lock = new ReentrantLock();
public void m() {
lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock()
}
}
} |
|
|