Посмотрите на эту статью
Я использовал как диаграммы активности UML, так и диаграммы в этой статье
EDIT
Чтобы поделиться небольшим опытом: не ожидайте, что эти диаграммы решат все проблемы проектирования с многопоточностью. По той же причине, по которой модульное тестирование многопоточных систем является сложным, составление диаграмм также является трудным Например, взгляните на диаграмму, упомянутую в 6.45.Вапуру ответ. Да, он показывает одновременное выполнение слоев, и это поможет вам точно определить потенциальные ошибки, но попытайтесь визуализировать, как будет выглядеть эта диаграмма, при попытке показать несколько одновременных клиентов веб-сайта. Это становится очень быстро. Я не говорю, что это невозможно сделать, однако количество возможных изменений настолько велико, что потребуется много усилий, чтобы сделать это правильно.
Это хороший пример, который поможет вам понять, почему многопоточность сложна. Если вы не можете нарисовать его, вы, вероятно, не поймете его сложность полностью, вы не сможете проверить его, и у вас всегда будет то ноющее чувство, что вы что-то забыли.
Вот почему у меня есть надежды на платформы и языки, чтобы устранить эти проблемы, но мы еще не пришли.