Esistono fonti canoniche per imparare come strutturare programmi multi-thread? Anche con tutte le classi di utilità di concorrenza fornite da Java, sto avendo difficoltà a strutturare correttamente programmi multi-thread. Ogni volta che i thread sono coinvolti il mio codice diventa molto fragile, qualsiasi piccolo cambiamento può potenzialmente interrompere il programma perché il codice che salta avanti e indietro tra i thread tende a essere molto contorto.