JavaRush/Java блог/Архив info.javarush/Уровень 25: план уровня и доп. материалы
hubert
41 уровень

Уровень 25: план уровня и доп. материалы

Статья из группы Архив info.javarush
участников
Уровень 25: план уровня и доп. материалы - 1План уровня:
  • Enum, все особенности
  • Thread Life Cycle, состояние объекта Thread
  • Все нюансы создания и запуска новой нити, демоны.
  • Все нюансы прерывания/остановки нитей
  • Стек вызовов и перехват ошибок
  • Другие методы класса Thread (sleep, yield...)
Курс Java Что еще можно посмотреть на досуге: Ответы на вопросы к собеседованию по теме уровня Еще несколько полезных материалов по enumeration. О многопоточности в Java Пособие для будущего Java разработчика. Enterprise — часть 1 Advanced Java - Concurrency
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь! Вернуться к обучению java онлайн на JavaRush
Комментарии (18)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Пьер Дун
Уровень 31
20 апреля 2019, 06:16
извините, я не знаю украинский (или чо там за язык, хз), не могу юзать первую ссылку
Rihard1985
Уровень 33
Master
20 августа 2018, 15:40
у этого парня на видео слишком большие уши((
apollox
Уровень 40
11 мая 2017, 10:34
У меня есть непонятка с ENUM.
По лекции,
public enum Direction
{
UP,
DOWN,
LEFT,
RIGHT,
}
компилятором преобразуется в примерно это:
public final class Direction extends Enum
{
public static final Direction UP = new Direction();
public static final Direction DOWN = new Direction();
public static final Direction LEFT = new Direction();
public static final Direction RIGHT = new Direction();

private Direction() {} //приватный конструктор
}
Тут все понятно.
У нас есть статические переменные, в каждой из которых хранится ссылка на объект Direction.

А непонятно вот что.
Приватный конструктор Direction должен вызвать конструктор суперкласса, т.е. енума.
Но у него есть только конструктор с параметрами:
protected Enum(String name, int ordinal) {
this.name = name;
this.ordinal = ordinal;
}
А это значит, что мы должны в нашем конструкторе вызвать конструктор суперкласса с параметрами, но этого нет…
И непонятно, как каждый из объектов new Direction() получает названия констант (UP и так далее), как они передаются? Т.е как допустим первый new Direction() получает в name ENUM'a этот самый «UP», который мы можем позже вывести переопределенным toString()?
Corwin
Уровень 25
10 апреля 2017, 14:43
Иллюстрация из данной ссылки думаю будет более точная.
Evgenym
Уровень 27
16 февраля 2017, 16:31
Вот тут небольшая обзорная полезная статья о многопоточности.
Nicson777
Уровень 27
11 октября 2016, 01:04
С какого уровня следует начинать знакомиться с enterprise?
DefNeo
Уровень 36
12 августа 2016, 22:39
Видео повторяется.
alexand
Уровень 41
1 августа 2016, 14:08
Остался не понятным метод yield().
Описание из лекции:
yield() – текущая нить «пропускает свой ход». Нить из состояния running переходит в состояние ready, а Java-машина приступает к выполнению следующей нити. Состояния running & ready – это подсостояния состояния RUNNABLE.
Вот что по этому поводу у Эккеля написано:
Если вы знаете, что в текущей итерации run() сделано все необходимое, вы можете подсказать механизму планирования потоков, что процессором теперь может воспользоваться другой поток. Эта подсказка (не более чем рекомендация; нет никакой гарантии, что планировщик потоков «прислушается» к ней) воплощается в форме вызова метода yield(). Вызывая yield(), вы сообщаете системе, что в ней могут выполняться другие потоки того же приоритета.

Моя версия JVM подтверждает версию именно Эккеля. Более того, вторая задача 11 лекции вообще не так работает как ожидает валидатор. Ошибка в лекции?
Yuri_0504
Уровень 11
7 ноября 2016, 19:04
11-я задача работает правильно. Проблема в том, что System.out, System.in и System.err — это нейтивные потоки ОС и println() пишет в буфер ОС, а уже сама операционная система решает в какой последовательности выводить в консоль.
OctoTad
Уровень 31
10 июня 2016, 16:56
Кто-нибудь может подсказать КАК работает метод isAlive() «под капотом», а не ЧТО он делает? Единственное что нашел, это исходный код из пакета java.util.Thread, это:

public final native boolean isAlive();

Может где-то ещё посмотреть нужно?
OctoTad
Уровень 31
16 июня 2016, 11:18
Мне тут подсказали где искать реализацию. Этот метод нужно искать в исходниках JVM, но посмотрев исходники понял, что ничего не понял))
OctoTad
Уровень 31
5 июня 2016, 07:54
В своё время эта статья помогла разобраться с блокировками и перехватом InterruptedException.
paNNo4ka
Уровень 36
27 ноября 2016, 14:19
Интересная статья, спасибо. Правда, мне показалось, что в оригинале понятнее написано:)