Для чего предназначено ключевое слово synchronized? В какой ситуации следует его использовать?

max аватар
112

Синхронизация - это процесс сериализации доступа к критическим секциям кода. Мы будем использовать это ключевое слово тогда, когда мы ожидаем, что множество потоков будут доступаться или модифицировать определенные данные. Для понимания синхронизации нам необходимо взглянуть на манеру выполнения потока

Потоки могут выполняться в такой манере, что пути выполнения их могут быть абсолютно независимы друг от друга. Например, один поток может выполнять задачу печати, пока другой перерисовывает окно. Вот тогда потоки требуют синхронизации, действия по сериализации доступа к критическим секциям кода, в разные моменты выполнения программы. Например, скажем, два потока нуждаются в отсылке пакетов с данными через одно и то же сетевое соединение.  Каждый поток должен иметь возможность посылать свой пакет  перед тем, как другой поток начнет отсылать свой пакет и наоборот. Этот сценарий требует, чтобы каждый поток  синхронизировал свой доступ к коду, который в действительности производит отсылку пакетов с данными.

 

Если Вы чувствуете, что метод является очень критичным для бизнеса и нуждается в блокировке, следует использовать синхронизацию.


Конец
Сэмюэл Смайлс в свое время заметил, что из-за отсутствия контроля над собой многие люди всю жизнь проводят в борьбе с трудностями, которые сами же и создали. Их собственная упрямая жестокость не дает им добиться успеха.

Fruzenshtein аватар

А к сему именно применяется synchronized? К методам?

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке