Дальнейший анализ вышеприведенного решения предоставлен "@Andy Turner".
В этой задаче мы должны учитывать следующие две вещи.
1) Оба MyThread - t1 и t2поделитесь тем же SharedResource r.Это ограничит выполнение «doSomething», поэтому выполнение будет происходить в последовательном порядке.В зависимости от того, какой поток выбран первым, другой должен дождаться успешного завершения первого потока.т.е. спать в течение 5 сек.
Для этой задачи предположим, что
a) Поток t1 запущен первым, т.е. t1.doSomething ()
b) Ни один из других потоков, т. Е. T1 и t2, не может выполнить любойдругие методы из-за того, что t2 зависит от блокировки синхронизации, а t1 ожидает завершения первого метода doSomething, прежде чем он сможет запустить processSomething.
2) Как только первый поток (t1) "doSomething "выполнен успешно, оба потока находятся в состоянии выполнить одновременно.
Здесь потоки будут выполняться, как прокомментировано "@Andy Turner" выше.