Java. Многопоточность. Ключевое слово synchronized

  Рет қаралды 28,189

Sergey Arkhipov Java Tutorials

Sergey Arkhipov Java Tutorials

5 жыл бұрын

Разбираем на примере, как работает ключевое слово synchronized в Java.
Исходники:
github.com/Arhiser/java_tutor...
Поддержать канал💰:
yoomoney.ru/to/410018856244871
#ArhiTutorialsJava #ityoutubersru

Пікірлер: 40
@Dermidont333
@Dermidont333 3 ай бұрын
Автор и его канал - находка. Как же все доходчиво. Спасибо.
@IIEPEDO3
@IIEPEDO3 4 жыл бұрын
Мне очень нравится такой формат: короткие видео с большим количеством информации, без запинок и лишних слов!
@AutismSpectrumMsk
@AutismSpectrumMsk 8 ай бұрын
Замечательное видео! Самое понятное из всех просмотренных по теме. Спасибо большое
@Kami911
@Kami911 2 жыл бұрын
Очень приятное изложение материала. Кратко и по сути. Спасибо!
@prosto_komputer
@prosto_komputer 4 жыл бұрын
👍*Хорошее примечание*, "если все обернуть в синхронайзд, то смысл многопоточности пропадает". Благодарю за примеры.
@RedkeiGost
@RedkeiGost 3 жыл бұрын
Все видео сидел и думал "а смысл тогда в разных потоках?", чтобы в конце услышать, что да, его нет, если обернуть прям все-все.
@mihailegorin2349
@mihailegorin2349 3 ай бұрын
Крутое видео)
@d.mertsalov
@d.mertsalov 5 жыл бұрын
Действительно, многопоточность очень важная тема, где легко можно ошибиться. Спасибо!
@aRobert
@aRobert 4 жыл бұрын
Спасибо, простое и понятное ознакомление!
@user-fd3pr1sp4z
@user-fd3pr1sp4z 3 жыл бұрын
Сказал всё, что нужно. Максимально быстро и понятно. 5+
@SvetlanaCapri
@SvetlanaCapri Жыл бұрын
Спасибо.У Вас понятные примеры.
@yehorlevchenko3540
@yehorlevchenko3540 4 жыл бұрын
Спасибо, именно в этом видео я получил ответы на свои вопросы
@DevPlayGame
@DevPlayGame 2 жыл бұрын
Благодарю, это то что было нужно мне.
@Andrzej3935
@Andrzej3935 2 жыл бұрын
Спасибо вам огромное!
@locky1827
@locky1827 Жыл бұрын
Спасибо. Отличное обьяснение.
@user-my1by4tq7d
@user-my1by4tq7d 3 жыл бұрын
Очень приятно и просто
@linuxhooligans2002
@linuxhooligans2002 4 жыл бұрын
Мужик респект и уважуха!
@simplechannel7859
@simplechannel7859 4 жыл бұрын
Жаль что второй раз подписаться нельзя))))
@SemyakSD
@SemyakSD 7 ай бұрын
просто гений, спасибо
@Krasnolesye
@Krasnolesye 2 жыл бұрын
Спасибо. с монитором - уже что-то прояснилось
@vass8180
@vass8180 3 жыл бұрын
вопрос. если синхронайз по this/ какой обьект лочится? ведь у каждого потока будет свой this и потоки должны одновременно выполнятся?
@arhitutorials
@arhitutorials 3 жыл бұрын
Синхронайзд используется для синхронизации доступа к какому-то объекту из нескольких потоков. То есть этот объект один для всех потоков, и если внутри его методов есть синхронайзд на this то этот this для всех потоков одинаковый.
@vass8180
@vass8180 3 жыл бұрын
@@arhitutorials если поток заходит в синхронизированный метод (this) какой обьект находится в этом this?/какой обьект лочится?
@arhitutorials
@arhitutorials 3 жыл бұрын
@@vass8180 если нет подходящего общего объекта для синхронизации можно его создать. Если вызвать синхронайзд метод на объекте, то лочится этот объект.
@jekasol8644
@jekasol8644 2 жыл бұрын
Доброго времени суток!Подскажите, заинтересовал такой вопрос, ответ на который я так и не нашел. java поддерживает многопоточность(имея ввиду пакет java.util.concurrent). Но правильно ли я понимаю что это вид многопоточности с разделением времени, все созданные потоки выполняются в рамках одного процесса и одним ядром процессора. Т.е. когда мы создаем и запускаем подпотоки то все они выполняются "псевдопараллельно", процессор просто перемещается между этими потоками? Но как я понимаю никакой поддержки многопроцессорных систем(многоядерных), здесь нет? Так же, в java есть fork/join framework - в котором, насколько я понял , как раз осуществляется реальное многопоточное(многоядерное) программирование. Если есть возможность, поясните! Спасибо!
@arhitutorials
@arhitutorials 2 жыл бұрын
Потоки в Java - это надстройка над потоками операционной системы. Они работают параллельно и занимают все свободные ядра. fork/join framework предназначен для случаев, когда задачи порождают дочерние задачи. Причем задач много и выполняются они быстро. В этом случае на обычном пуле их выполнять невыгодно, потому что потоки все время будут ломиться в очередь, чтоб добавить туда свои задачи, и большую часть времени будут простаивать в заблокированном состоянии, ожидая доступа к очереди, вместо того, чтоб заниматься работой.
@jekasol8644
@jekasol8644 2 жыл бұрын
@@arhitutorials Спасибо за развернутый ответ!
@gulfstream1800
@gulfstream1800 2 жыл бұрын
Если внутри метода run имеется 2 блока синхронизации на разных объектах, первый поток захватывает первый монитор, второй заходит в метод и блокируется, ожидания освобождения монитора, разве не так? (В видео говорится о том, что другой поток захватит монитор другого блока синхронизации)
@old-anekdoty
@old-anekdoty 4 жыл бұрын
Спасибо, но почему даже со стрингбуфером третья строка пустая иногда?
@arhitutorials
@arhitutorials 4 жыл бұрын
Потому что стрингбуфер обеспечивает синхронизацию только внутри своих методов. Но там в Runnable его методы вызываются 3 раза. Между этими вызовами может вклинится другой поток и выполнить свой вызов. То есть, например, пустую строку записать. Тогда получится, к примеру, что на 3-й строке пустая строка, а на четвертой сразу 2 текста. Чтоб всегда было все одинаково нужен synchronized блок на все 3 вызова, тогда другой поток не сможет вмешаться.
@java_worm
@java_worm Жыл бұрын
круто, как же круто ты объясняешь, спасибо
@user-oi4dg9ry8p
@user-oi4dg9ry8p 3 жыл бұрын
Чувак, ты топ, объясняешь как Алишев. Дал бы ты рекламу и сделал курс базовый на java, срубил бы бабла на ютабчике :D
@baltica_san6047
@baltica_san6047 2 жыл бұрын
Вопрос. Зачем использовать synchronization в реальной жизни? Если задачи выполняются одна за другой, а не параллельно, разве это всё ещё является МНОГОпоточность? В чем преимущества?
@arhitutorials
@arhitutorials 2 жыл бұрын
Синхронизация нужна только в тех местах, где есть какие-то ресурсы, к которым может обращаться одновременно несколько потоков. Например, если есть очередь задач, из которой потоки берут задачи и выполняют, то доступ к очереди должен быть синхронизирован, чтоб не было накладок типа того, что два потока одну задачу возьмут. А сами задачи уже можно выполнять параллельно. В общем, обычно синхронизацию используют по минимуму и только в необходимых местах.
@user-tz3bd3oe3i
@user-tz3bd3oe3i Жыл бұрын
Добрый вечер, я пока плохо в этом разбирась... Возник вопрос - как мы можем создать объект типа Runnable, ведь Runnable это интерфейс?
@arhitutorials
@arhitutorials Жыл бұрын
На самом деле создаётся класс без имени, наследующий Runnable, и тут же на месте создаётся экземпляр этого класса, по этому все нормально.
@user-tz3bd3oe3i
@user-tz3bd3oe3i Жыл бұрын
Спасибо большое за ответ
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
создается анонимный класс
@altayski3704
@altayski3704 Жыл бұрын
8 минут половина справочника Шилдта о многопоточности
@metasta3a
@metasta3a 4 ай бұрын
Сори Полезно, но музыка дебильная 😀
Java. Multithreading. Wait and Notify methods. Blocking Queue and Worker Thread.
8:12
Sergey Arkhipov Java Tutorials
Рет қаралды 17 М.
Java. Класс Object. Разбор вопросов на собеседование.
21:16
Sergey Arkhipov Java Tutorials
Рет қаралды 30 М.
DO YOU HAVE FRIENDS LIKE THIS?
00:17
dednahype
Рет қаралды 93 МЛН
WHO LAUGHS LAST LAUGHS BEST 😎 #comedy
00:18
HaHaWhat
Рет қаралды 19 МЛН
Многопоточность в Java: основы
1:23:05
Computer Science Center
Рет қаралды 111 М.
Java. Многопоточность. Как устроить Deadlock.
14:39
Sergey Arkhipov Java Tutorials
Рет қаралды 9 М.
Java. Разбираемся с монадами.
20:20
Sergey Arkhipov Java Tutorials
Рет қаралды 10 М.
ЧТО ТАКОЕ ПОТОК? [МЬЮТЕКС, СЕМАФОР]
20:46
АйтишныйДомосед
Рет қаралды 25 М.
Зачем Java ATOMIC, когда есть VOLATILE???
10:04
Decembrist ITTV
Рет қаралды 7 М.
Многопоточность глазами разработчика
1:36:04
DO YOU HAVE FRIENDS LIKE THIS?
00:17
dednahype
Рет қаралды 93 МЛН