Просьба пояснить эти две конструкции, гугление как-то не очень разъяснило.
Assert вообще не ясно. А synchronized я так понял блокирует какая-то блок таким образом, что к нему может иметь доступ только один поток и этот блок не может выполняться паралельно. Если я правильно понял, то что это за случаи когда такое нужно, если можна ещё и с примером кода.