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
извините, я не знаю украинский (или чо там за язык, хз), не могу юзать первую ссылку
Rihard1985 Уровень 33 Master
20 августа 2018
у этого парня на видео слишком большие уши((
apollox Уровень 40
11 мая 2017
У меня есть непонятка с 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
Иллюстрация из данной ссылки думаю будет более точная.
Evgenym Уровень 27
16 февраля 2017
Вот тут небольшая обзорная полезная статья о многопоточности.
Nicson777 Уровень 27
11 октября 2016
С какого уровня следует начинать знакомиться с enterprise?
DefNeo Уровень 36
12 августа 2016
Видео повторяется.
alexand Уровень 41
1 августа 2016
Остался не понятным метод yield().
Описание из лекции:
yield() – текущая нить «пропускает свой ход». Нить из состояния running переходит в состояние ready, а Java-машина приступает к выполнению следующей нити. Состояния running & ready – это подсостояния состояния RUNNABLE.
Вот что по этому поводу у Эккеля написано:
Если вы знаете, что в текущей итерации run() сделано все необходимое, вы можете подсказать механизму планирования потоков, что процессором теперь может воспользоваться другой поток. Эта подсказка (не более чем рекомендация; нет никакой гарантии, что планировщик потоков «прислушается» к ней) воплощается в форме вызова метода yield(). Вызывая yield(), вы сообщаете системе, что в ней могут выполняться другие потоки того же приоритета.

Моя версия JVM подтверждает версию именно Эккеля. Более того, вторая задача 11 лекции вообще не так работает как ожидает валидатор. Ошибка в лекции?
OctoTad Уровень 31
10 июня 2016
Кто-нибудь может подсказать КАК работает метод isAlive() «под капотом», а не ЧТО он делает? Единственное что нашел, это исходный код из пакета java.util.Thread, это:

public final native boolean isAlive();

Может где-то ещё посмотреть нужно?
OctoTad Уровень 31
5 июня 2016
В своё время эта статья помогла разобраться с блокировками и перехватом InterruptedException.