Resolvendo problemas com threads
No capítulo anterior, aprendemos a criar threads em várias linguagens. Mas os exemplos eram todos triviais: threads que imprimem mensagens ou calculam valores simples. Agora vamos usar threads para resolver problemas de verdade.
Os exemplos deste capítulo têm uma propriedade em comum: as threads não compartilham estado mutável entre si. Cada uma trabalha sobre sua própria fatia de dados, e os resultados são combinados apenas depois que todas terminam. Isso é proposital. Queremos primeiro ver threads funcionando corretamente, antes de explorar o que pode dar errado.