Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Por que usar syncronized ao invés de simplesmente não usar Thread?

Nos exemplos da explicação da matéria, foi feito um programa com Threads e syncronized para controlar o acesso concorrente. Não seria mais óbvio fazer o programa sem Threads? Já que um método não pode começar antes do outro terminar? Me refiro ao exercício do curso de Threads 1. Caso do Banheiro.

3 respostas
solução!

Oi Felipe, tudo bem? Essa é uma ótima pergunta. O problema que as threads resolvem as vezes não ficam muito claras na cabeça não é? Em casos mais simples é possível sim programar sem usar threads, mas existem casos onde você não pode ou não deveria não usar threads, quer um exemplo muito prático? Interfaces!

Em aplicações android por exemplo, quando clicamos em algum botão, esse botão normalmente executa uma ação e dependendo dessa ação, ela não pode ser feita em uma thread única. Será muito comum neste caso, você ter pelo menos duas, uma para executar e responder as ações da interface e a outra para realmente executar a ação.

Digamos que você clique para baixar um disco no Spotify, esse download, caso seja feito na mesma thread da interface, você terá o aplicativo travado até o download terminar. Imagine ter que esperar o download terminar para poder ouvir as músicas. Pode funcionar sem threads? Claro, mas a experiência do usuário seria terrível. Por isso que, quando o Android detecta que você está programando esse tipo de ação, ele briga com você e diz para que a ação seja feita em uma thread separada.

O mesmo acontece para aplicações desktop e na web também de alguma forma. Pegou a ideia?

Entendi. Já imaginava que seria isso, mas estava inseguro.

Normal, o importante é não deixar a dúvida pendente, tirar assim que ela surgir.