автор, ты молодец. только из твоих видео получилось что-то понять о многопоточности (не считая классического чтива типа Хорстмана, Head First и т.п.). спасибо за твой труд!
Короче получается так :) Любой объект, кроме примитивного, может сам являться объектом синхронизации, за счёт наличия внутри некоего "монитора" этого объекта. Чтобы в коде создать критическую секцию и воспользоваться этим "монитором" надо использовать synchronized функцию, при этом используется монитор this и вся функция будет критической секцией, или блок кода synchronised(Object obj) {}, тогда критической секцией будет этот блок кода и используется монитор объекта obj. При входе в такую функцию захватывается монитор (или происходит ожидание освобождения его другим потоком). При необходимости, для удобства можно создать объект Object, который будет служить только в качестве объекта синхронизации и передаваться в блок кода synchronized(). Да, ещё - в документации "захват объекта синхронизации" - этого "монитора" называется: "стать владельцем монитора". В общем, получается просто, что всё давным - давно известное тупо назвали другими словами.
Монитор это набор правил или невидимый код который гарантирует доступ лишь 1 потока в инструкции ограниченные словом synchonize. Объект синхронизации называется mutex.
автор, ты молодец. только из твоих видео получилось что-то понять о многопоточности (не считая классического чтива типа Хорстмана, Head First и т.п.). спасибо за твой труд!
Одно дело понимать! Другое дело начать применять! Так вот этот урок - первый шаг к практическому применению многопоточности в Java! Спасибо!
Ты преподаватель от бога) cool! Спасибо большое за такое качественное видео.
Спасибо, очень приятно.
Спасибо огромное, помог мне разобраться,бился месяцев 3 не понимая синхи...
благодарю
Короче получается так :)
Любой объект, кроме примитивного, может сам являться объектом синхронизации, за счёт наличия внутри некоего "монитора" этого объекта. Чтобы в коде создать критическую секцию и воспользоваться этим "монитором" надо использовать synchronized функцию, при этом используется монитор this и вся функция будет критической секцией, или блок кода synchronised(Object obj) {}, тогда критической секцией будет этот блок кода и используется монитор объекта obj. При входе в такую функцию захватывается монитор (или происходит ожидание освобождения его другим потоком). При необходимости, для удобства можно создать объект Object, который будет служить только в качестве объекта синхронизации и передаваться в блок кода synchronized().
Да, ещё - в документации "захват объекта синхронизации" - этого "монитора" называется: "стать владельцем монитора".
В общем, получается просто, что всё давным - давно известное тупо назвали другими словами.
Да. Примерно так.
Монитор это набор правил или невидимый код который гарантирует доступ лишь 1 потока в инструкции ограниченные словом synchonize. Объект синхронизации называется mutex.