# Principais desafios em cenário de concorrência

Quando temos um fator externo decidindo quando *alternar* as tarefas/threads, não temos qualquer controle sobre a ordem com que estas threads serão executadas.

Seja por time-slice, por prioridade ou até mesmo espera no I/O, a decisão do escalonador de quando uma thread vai ser executada e em qual ordem, não está sob nosso controle.

<figure><img src="https://1347906346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FADWkcUWoXJQdqxwxxE7z%2Fuploads%2FPlcBrnxCmIxfK5qjwwbe%2FScreenshot%202024-11-29%20at%2000.35.06.png?alt=media&#x26;token=15913f51-7063-423b-8cda-8120562d102a" alt=""><figcaption></figcaption></figure>

Na imagem acima podemos ver que, apesar de T1 ter iniciado antes que a T2, só foi concluída depois. No meio do processo - e por algum motivo *que nunca vamos saber qual e nem queremos saber* -, o escalonador decidiu interromper a execução da T1 pra priorizar a T2 até sua conclusão.

> Vai entender, é cada doido nesse mundo...

Então com isso adicionamos uma variável que torna o mundo da concorrência tão desafiador.
