hubert
41 уровень

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

Пост из группы Архив info.javarush.ru
3681 участников
План уровня:
  • Enum, все особенности
  • Thread Life Cycle, состояние объекта Thread
  • Все нюансы создания и запуска новой нити, демоны.
  • Все нюансы прерывания/остановки нитей
  • Стек вызовов и перехват ошибок
  • Другие методы класса Thread (sleep, yield...)

Курс Java Что еще можно посмотреть на досуге: Ответы на вопросы к собеседованию по теме уровня. Еще несколько полезных материалов по enumeration О многопоточности в Java Пособие для будущего Java разработчика. Enterprise — часть 1 https://www.youtube.com/playlist?list=PL6jg6AGdCNaXo06LjCBmRao-qJdf38oKp
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!

Вернуться к плану обучения
Вернуться к обучению
java онлайн
на JavaRush
Комментарии (16)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизироваться
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
Интересная статья, спасибо. Правда, мне показалось, что в оригинале понятнее написано:)
remain4life 41 уровень
8 мая 2016, 10:48
На 14-м уроке то же видео, что и на 10-м уровне, только почему-то в более плохом качестве :) Можно было бы что-то новенькое включить.
ab_random 31 уровень, Санкт-Петербург
28 февраля 2016, 18:44