volatile
- этот модификатор вынуждает потоки отключить оптимизацию доступа и использовать единственный экземпляр переменной. Если переменная примитивного типа – этого будет достаточно для обеспечения потокобезопасности. Если же переменная является ссылкой на объект – синхронизировано будет исключительно значение этой ссылки. Все же данные, содержащиеся в объекте, синхронизированы не будут!synchronized
- это зарезервированное слово позволяет добиваться синхронизации в помеченных им методах или блоках кода.Ключевые слова
transient
и native
к многопоточности никакого отношения не имеют, первое используется для указания полей класса, которые не нужно сериализовать, а второе - сигнализирует о том, что метод реализован в платформо-зависимом коде.#вопросы_с_собеседований
В чём заключаются различия между java.util.concurrent.Atomic.compareAndSwap() и java.util.concurrent.Atomic.weakCompareAndSwap().
В чём заключаются различия между java.util.concurrent.Atomic.compareAndSwap() и java.util.concurrent.Atomic.weakCompareAndSwap().
•
•
•
weakCompareAndSwap()
не создает memory barrier
и не дает гарантии happens-before
;•
weakCompareAndSwap()
сильно зависит от кэша/CPU
, и может возвращать false
без видимых причин;•
weakCompareAndSwap()
, более легкая, но поддерживаемая далеко не всеми архитектурами и не всегда эффективная операция.#вопросы_с_собеседований
Что такое «потоки-демоны»?
Что такое «потоки-демоны»?
Потоки-демоны работают в фоновом режиме вместе с программой, но не являются неотъемлемой частью программы. Если какой-либо процесс может выполняться на фоне работы основных потоков выполнения и его деятельность заключается в обслуживании основных потоков приложения, то такой процесс может быть запущен как поток-демон с помощью метода setDaemon(boolean value), вызванного у потока до его запуска. Метод boolean isDaemon() позволяет определить, является ли указанный поток демоном или нет. Базовое свойство потоков-демонов заключается в возможности основного потока приложения завершить выполнение потока-демона (в отличие от обычных потоков) с окончанием кода метода main(), не обращая внимания на то, что поток-демон еще работает.
👎 6 признаков того, что вы плохой программист
В большинстве случаев мы знаем, что нам следует делать, но не делаем. Мы думаем, что сделаем это позже, но «позже» никогда не наступает. Это первый шаг к тому, чтобы стать плохим программистом.
https://proglib.io/sh/3QAMoJsY6h
В большинстве случаев мы знаем, что нам следует делать, но не делаем. Мы думаем, что сделаем это позже, но «позже» никогда не наступает. Это первый шаг к тому, чтобы стать плохим программистом.
https://proglib.io/sh/3QAMoJsY6h
☕️ Основы Java за 30 минут: самоучитель для начинающих
В этой статье мы рассмотрим основные особенности языка Java, познакомимся с его философией и разберемся с причинами его популярности, а также напишем пару простеньких программ, чтобы изучить его синтаксис и подход к написанию кода.
https://proglib.io/sh/69n5jeLJ8A
В этой статье мы рассмотрим основные особенности языка Java, познакомимся с его философией и разберемся с причинами его популярности, а также напишем пару простеньких программ, чтобы изучить его синтаксис и подход к написанию кода.
https://proglib.io/sh/69n5jeLJ8A
Java All-in-One For Dummies (2020)
Автор: Doug Lowe
Количество страниц: 960
Если вы всегда хотели научиться программировать на Java, но не знали, с чего начать, эта книга вам подойдет. Она послужит не только учебником, но и сопровождающим в работе справочным материалом, где всегда можно найти ответ на любой вопрос о тонкостях языка.
Скачать книгу
Автор: Doug Lowe
Количество страниц: 960
Если вы всегда хотели научиться программировать на Java, но не знали, с чего начать, эта книга вам подойдет. Она послужит не только учебником, но и сопровождающим в работе справочным материалом, где всегда можно найти ответ на любой вопрос о тонкостях языка.
Скачать книгу
Telegram
Книги для программистов (reserved)
Java All-in-One For Dummies (2020)
Автор: Doug Lowe
Автор: Doug Lowe
В чём различия между volatile и Atomic переменными?
volatile
принуждает использовать единственный экземпляр переменной, но не гарантирует атомарность. Например, операция count++
не станет атомарной просто потому, что count
объявлена volatile
. C другой стороны class AtomicInteger
предоставляет атомарный метод для выполнения таких комплексных операций атомарно, например getAndIncrement()
– атомарная замена оператора инкремента, его можно использовать, чтобы атомарно увеличить текущее значение на один. Похожим образом сконструированы атомарные версии и для других типов данных.Начинай с PMI.
Программа развития в IT в международной компании!
За полтора года на программе IT Inkompass ты изучишь ключевые кейсы в анализе данных бизнес-процессов и настройке дашбордов . Под руководством ментора ты будешь заниматься сбором и обработкой данных, разработкой функций и упаковкой их в микросервисы. Успей подать заявку – https://vk.cc/c5O1Jy
Что мы предлагаем?
· заработная плата — 80 000 рублей, ДМС и компенсация питания;
· длительность программы развития – 18 месяцев;
· оформление в штат компании сразу на старте программы;
· возможность работать как в классном современном офисе, так и удаленно.
Спеши подать заявку: https://vk.cc/c5O1Jy
Программа развития в IT в международной компании!
За полтора года на программе IT Inkompass ты изучишь ключевые кейсы в анализе данных бизнес-процессов и настройке дашбордов . Под руководством ментора ты будешь заниматься сбором и обработкой данных, разработкой функций и упаковкой их в микросервисы. Успей подать заявку – https://vk.cc/c5O1Jy
Что мы предлагаем?
· заработная плата — 80 000 рублей, ДМС и компенсация питания;
· длительность программы развития – 18 месяцев;
· оформление в штат компании сразу на старте программы;
· возможность работать как в классном современном офисе, так и удаленно.
Спеши подать заявку: https://vk.cc/c5O1Jy
Что произойдет в результате компиляции кода?
Anonymous Quiz
64%
Ошибка компиляции в строке 4.
5%
Ошибка компиляции в строке 5.
7%
Ошибка компиляции в строке 6.
24%
Код скомпилируется успешно
Рассказываем, как пройти один курс и зарабатывать под 100 000 ₽!
Сейчас в мире много возможностей и интересных, высокооплачиваемых профессий, в некоторых даже новички удаленно зарабатывают от 95 000₽, а после двух лет работы — до 340 000 ₽.
Одна из таких профессий — Java-разработчик!
Стать таким специалистом можно, например, в Skypro. Там после обучения выдают диплом государственного образца и помогают с трудоустройством: подбирают вакансии, натаскивают на собеседования с HR, подсказывают с резюме. Бонусом каждый выпускник забирает с собой портфолио с двумя готовыми проектами.
Вы сможете создавать собственные финансовые приложения, социальные сети и сайты.
Переходи по ссылке с уникальным предложением в честь старта потока и освой востребованную профессию с дополнительной скидкой 10% по промокоду «УЧИСЬ» - https://go.skyeng.ru/javaproglib_skypro
Сейчас в мире много возможностей и интересных, высокооплачиваемых профессий, в некоторых даже новички удаленно зарабатывают от 95 000₽, а после двух лет работы — до 340 000 ₽.
Одна из таких профессий — Java-разработчик!
Стать таким специалистом можно, например, в Skypro. Там после обучения выдают диплом государственного образца и помогают с трудоустройством: подбирают вакансии, натаскивают на собеседования с HR, подсказывают с резюме. Бонусом каждый выпускник забирает с собой портфолио с двумя готовыми проектами.
Вы сможете создавать собственные финансовые приложения, социальные сети и сайты.
Переходи по ссылке с уникальным предложением в честь старта потока и освой востребованную профессию с дополнительной скидкой 10% по промокоду «УЧИСЬ» - https://go.skyeng.ru/javaproglib_skypro
#вопросы_с_собеседований
Чем отличается работа метода wait() с параметром и без параметра?
Чем отличается работа метода wait() с параметром и без параметра?
wait() без параметров освобождает монитор и переводит вызывающий поток в состояние ожидания до тех пор, пока другой поток не вызовет метод notify()/ notifyAll(),
с параметрами заставит поток ожидать заданное количество времени или вызова notify()/ notifyAll().
с параметрами заставит поток ожидать заданное количество времени или вызова notify()/ notifyAll().
#вопросы_с_собеседований
Что такое double checked locking Singleton?
Что такое double checked locking Singleton?
double checked locking Singleton - это один из способов создания потокобезопасного класса, реализующего шаблон Одиночка. Данный метод пытается оптимизировать производительность, блокируясь только случае, когда экземпляр одиночки создаётся впервые.
Следует заметить, что требование volatile обязательно. Проблема Double Checked Lock заключается в модели памяти Java, точнее в порядке создания объектов, когда возможна ситуация, при которой другой поток может получить и начать использовать (на основании условия, что указатель не нулевой) не полностью сконструированный объект. Хотя эта проблема была частично решена в JDK 1.5, рекомендация использовать volatile для Double Cheсked Lock остаётся в силе.
Следует заметить, что требование volatile обязательно. Проблема Double Checked Lock заключается в модели памяти Java, точнее в порядке создания объектов, когда возможна ситуация, при которой другой поток может получить и начать использовать (на основании условия, что указатель не нулевой) не полностью сконструированный объект. Хотя эта проблема была частично решена в JDK 1.5, рекомендация использовать volatile для Double Cheсked Lock остаётся в силе.
Пора сбросить хвост устаревшего кода и изучить Golang вместе с экспертами крупнейшего в e-com сообщества Go- разработчиков!
Route 256
Highway to e-com
💎 Бесплатно
💎 Оффер лучшим выпускникам
💎 Без собеседования на входе
💎 Два месяца
💎 Старт 25 сентября
В программе запуск и тестирование проектов на Go, HTTP и gRPC, базы данных, мониторинг, брокеры сообщений и другое.
Будет предварительный отбор. Подай заявку до 25 сентября включительно и перезапусти карьеру в IT: https://ozon.ru/t/TVo97
Route 256
Highway to e-com
💎 Бесплатно
💎 Оффер лучшим выпускникам
💎 Без собеседования на входе
💎 Два месяца
💎 Старт 25 сентября
В программе запуск и тестирование проектов на Go, HTTP и gRPC, базы данных, мониторинг, брокеры сообщений и другое.
Будет предварительный отбор. Подай заявку до 25 сентября включительно и перезапусти карьеру в IT: https://ozon.ru/t/TVo97
#вопросы_с_собеседований
Что такое «пул потоков»?
Что такое «пул потоков»?
Разработчик! Любишь ли ты ловить девопса, чтобы он нашел, почему микросервис не заводится? А что, если ты сможешь сам тестировать и выкатывать свой микросервис в продакшен?
1 октября начинается бесплатная Вечерняя Школа Kubernetes для разработчиков.
Будет полноценная теория курса «Kubernetes для разработчиков» и практические задания в облаке MCS. Знания, полученные в Вечерней Школе, помогут разработчикам говорить на одном языке с девопсами и самостоятельно работать в кластере. Меньше созвонов и отладки, больше интересной работы.
Подробности и регистрация: https://slurm.club/395K4Xa
1 октября начинается бесплатная Вечерняя Школа Kubernetes для разработчиков.
Будет полноценная теория курса «Kubernetes для разработчиков» и практические задания в облаке MCS. Знания, полученные в Вечерней Школе, помогут разработчикам говорить на одном языке с девопсами и самостоятельно работать в кластере. Меньше созвонов и отладки, больше интересной работы.
Подробности и регистрация: https://slurm.club/395K4Xa