Arquivo da Categoria: Threads

Thread chamando método wait()

to call wait(), the thread must own the lock on the object that wait() is being invoked on. Anúncios

Publicado em Threads | Etiquetas | Publicar um comentário

String fornecendo ‘lock’ para thread. CUIDADO !!! Objetos diferentes no heap !

Repare, neste código, que o output sai indefinido devido a sincronização com uma String. Lembre-se que no heap, cada string é um objeto diferente, portanto os locks fornecidos para as 3 threads (MBThead) serão de objetos diferentes.       … Continuar a ler

Publicado em Threads | Etiquetas | Publicar um comentário

Strings fornecendo o lock para Threads

Vamos comparar a diferença entre os três objetos abaixo criados no fornecimento do Lock para Threads sincronizadas.     String s = “pedro”;     String s = new String(“pedro”);     static String s = “pedro”;         // No caso abaixo, a … Continuar a ler

Publicado em Threads | Etiquetas | Publicar um comentário

Thread: Notificado o objeto errado …

No código abaixo, é interessante observarmos que a thread “A” ao ser inicializada imprime “A wait” e depois entra em espera por 10 segundos. Na thread main, notificamos as threads que estão na lista de espera da classe Teste (monitor … Continuar a ler

Publicado em Threads | Etiquetas | Publicar um comentário

Blocos Sincronizados, Lock fornecido por Strings

// No caso abaixo, a string é um literal. Como é sabido, a JVM mantém um pool de strings para otimizar o uso de sua memória quando declaramos-a como um literal, ou seja, para as duas instâncias de Tr, a … Continuar a ler

Publicado em Threads | Etiquetas | Publicar um comentário

Join() example

O código abaixo atachou a Thread Main ao final da Thread 1 (na linha t1.join()). Por isso a ordem no output saiu correta, ou seja, não se misturou Counter 1 com Counter 2 e Counter 3.         … Continuar a ler

Publicado em Threads | Etiquetas | Publicar um comentário

Deadlock

  ❑ Deadlocking can occur when a locked object attempts to access another locked object that is trying to access the first locked object. In other words, both threads are waiting for each other’s locks to be released; therefore, the … Continuar a ler

Publicado em Threads | Etiquetas | Publicar um comentário

Veja a consequência de threads executando o mesmo objeto porém com locks em objetos diferentes

public class TestThread5 { public static void main(String[] args) { EmbaralhaPalavras e = new EmbaralhaPalavras(“Não entendo direito esse negócio de Thread. É um pouco abstrato !”); // duas threads executando o mesmo objeto (e à EmbaralhaPalavras) Thread t1 = new … Continuar a ler

Publicado em Java, Threads | Etiquetas | Publicar um comentário

Threads disputando o lock de um objeto

Publicado em Threads | Etiquetas | Publicar um comentário

Looping (wait and notify)

Exemplo 1: Ambas as threads (operador e máquina) são iniciadas e ficam em looping infinito. A thread da máquina tão logo que é iniciada, se não contiver nenhum trabalho a realizar, então entra em estado de espera (método wait). Podemos … Continuar a ler

Publicado em Threads | Etiquetas | Publicar um comentário