Бонусное задание | 13 лекция | 6 уровень

6 уровень, 13 лекция
Открыта

— Здорово, боец!

— Здравия желаю, товарищ капитан!

— У меня для тебя шикарная новость. Вот тебе задания для закрепления полученных навыков. Выполняй их каждый день, и твои навыки будут расти с неимоверной скоростью. Они специально разработаны для выполнения их в Intellij IDEA.

9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Thread.currentThread - всегда возвращает текущую нить
1. В методе printMsg присвой переменной t текущую нить. 2. В методе printMsg после всех действий поставь задержку в 1 миллисекунду.
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Последовательные выполнения нитей
1. В методе run после всех действий поставь задержку в 10 миллисекунд. Выведи "Нить прервана", если нить будет прервана. 2. Сделай так, чтобы все нити выполнялись последовательно: сначала для нити №1 отсчет с COUNT до 1, потом для нити №2 с COUNT до 1 и т.д. Пример: #1: 4 #1: 3 ... #1: 1 #2: 4 ...
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Рекурсивное создание нитей
1. Измени класс GenerateThread так, чтобы он стал нитью. 2. Создай конструктор GenerateThread, который должен: 2.1. Вызвать конструктор суперкласса с параметром String - номером созданной нити. Используй createdThreadCount. 2.2. Запустить текущую нить. 2.3. Номер первой нити должен начинается с 1.
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Последовательные выполнения нитей
1. Разберись, что делает программа. 2. Сделай так, чтоб программа сначала выводила результат нити, а когда нить завершится - продолжила метод main. 3. Пример выходных данных: inside MyThread 0 inside MyThread 1 ... inside MyThread 9 inside main 0 inside main 1 ... inside main 9
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Взаимная блокировка
1. Разберись, как работает программа. 2. Не меняя классы T1 и T2 сделай так, чтобы их нити завершились, не обязательно успешно. 3. Метод sleep не использовать.
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Создание по образцу
Разберись, как работает программа. По образу и подобию CountdownRunnable создай нить CountUpRunnable, которая выводит значения в нормальном порядке - от 1 до number.
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Поиграем?
Три человека играют в игру. Каждый игрок(Gamer) характеризуется двумя параметрами: фамилией(name) и количеством действий в секунду (rating). Нужно вывести в консоль ход игры и определить победителя и проигравших. Итак... 1. Разберись, что делает программа. 1.1. List<String> steps хранит последовател
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Кто первый встал - того и тапки
1. Разберись, что делает программа. 1.1. Каждая нить должна читать с консоли слова. Используй готовый static BufferedReader reader. 1.2. Используй AtomicInteger readStringCount, чтобы посчитать, сколько слов уже считано с консоли всеми нитями. 2. Реализуй логику метода run: 2.1. Пока нить не прерва
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Только по-очереди!
1. В классе Solution создать public static класс нити Read3Strings унаследовавшись от Thread. 2. В методе run реализовать чтение с консоли трех строк. 3. Три подряд введенных строки должны считываться в одной нити и объединяться в одну строку через пробел. 4. В методе main вывести результат для кажд
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Последовательный вывод файлов
1. Разберись, что делает программа. 2. В статическом блоке считай 2 имени файла firstFileName и secondFileName. 3. Внутри класса Solution создай нить public static ReadFileThread, которая реализует интерфейс ReadFileInterface (Подумай, что больше подходит - Thread или Runnable). 3.1. Метод setFileNa

— Те задания были для духов. Для дедушек я добавил бонусные задания повышенной сложности. Только для старослужащих.

9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Factory method pattern
1. Внимательно посмотри, какие классы у тебя есть. 2. В отдельных файлах в пакете common создай классы JpgReader, PngReader, BmpReader, которые реализуют интерфейс ImageReader. 3. В отдельном файле в основном пакете создай класс ImageReaderFactory с одним методом. 3.1. Подумай, как он должен называт
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Клубок
1. Создай 5 различных своих нитей c отличным от Thread типом: 1.1. Нить 1 должна бесконечно выполняться; 1.2. Нить 2 должна выводить "InterruptedException" при возникновении исключения InterruptedException; 1.3. Нить 3 должна каждые полсекунды выводить "Ура"; 1.4. Нить 4 должна реализовать интерфейс
9
Задача
Java Core,  6 уровень,  13 лекция
Недоступна
Отдебажим все на свете
Разобраться, что делает программа. Почитать про UncaughtExceptionHandler - это важно. Еще раз внимательно посмотреть программу. Разобраться - продебажить - почему наш OurUncaughtExceptionHandler не срабатывает. Исправить ошибку, т.е. все должно работать. :) Ожидаемый результат в произвольном порядк
Комментарии (171)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Самуил Олегович18 уровень, Киев
13 июня, 15:31
OOOO - запасы ЧМ перевалило через 1К!!! ИТОГО - 1020 ЧМ
Valery19 уровень
28 мая, 17:14
спасибо комментам, без них 16 уровень не закончила бы. Если только с 22 какого-нибудь возвращаться наверно) в общем жесть пошла, ребята)
АртемGeek24 уровень, Москва
31 мая, 13:32
Это только разминка, жесть начнется с 19 уровня) Попомните мои слова.
Pavel Ivan22 уровень, Минск
5 мая, 10:35
про тапки здесь почитайте очень полезно https://ru.stackoverflow.com/questions/732637/java-%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-bufferedreader-%D0%BE%D0%B4%D0%BD%D0%BE%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D0%BC%D0%B8-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B0
Pavel Ivan22 уровень, Минск
4 мая, 17:57
не заморачивайтесь особо, разрабы путают условия: чтобы подольше нас задержать на сервисе, потому-что валидатор написать на все случаи жизни сложно и последнее потому-что хотят чтобы мы получше запомнили материал. Вот такая последовательность приоритетов, а теперь поставьте себя на их место и подумайте какие были бы у вас приоритеты!?))
Nubas18 уровень, Новосибирск
5 мая, 22:27
валидатор написать на все случаи жизни сложно программировать вообще сложно, по крайней мере для большинства... кроме первой причины другие вряд ли, это же не некоммерческий фонд повышения образованности)
Михаил33 уровень
9 апреля, 19:37
Задача поиграем, валидатор принял код, выводящий вот это:
Ivanov:Начало игры
Petrov:Начало игры
Sidorov:Начало игры
Sidorov:Сбор ресурсов
Ivanov:Сбор ресурсов
Sidorov:Рост экономики
Sidorov:Убийство врагов
Ivanov:Рост экономики
Sidorov:победитель!
Petrov:Сбор ресурсов
Sidorov:проиграл
Ivanov:Убийство врагов
Ivanov:победитель!
Ivanov:проиграл
Petrov:Рост экономики
Petrov:Убийство врагов
Petrov:победитель!
Petrov:проиграл
Но не принял код, выводящий вот это:
Sidorov:Начало игры
Ivanov:Начало игры
Petrov:Начало игры
Sidorov:Сбор ресурсов
Ivanov:Сбор ресурсов
Sidorov:Рост экономики
Sidorov:Убийство врагов
Ivanov:Рост экономики
Sidorov:победитель!
Ivanov:проиграл
Petrov:проиграл
На первой картинке была проверка в начале всей программы и пропускала строку с выводом неправильного победителя (я просто случайно запустил проверку), а во втором была проверка на существование победителя и выход из функции, при правдивости условия, в цикле, который идет по списку и который, очевидно, выводит правильно. Смотрите, валидатор любит щекотать нервы.
MrKermit20 уровень, Москва
9 апреля, 08:37
Ничегошеньки не понял. 1) public static Thread.UncaughtExceptionHandler handler = new OurUncaughtExceptionHandler(); Получается как? Объявляем объект нить.интерфейс = наш класс который реализует этот интерфейс и переопределяет метод uncaughtException который получает Thread t, Throwable e и выводит System.out.println(t.getName() + ": " + e.getMessage()); т.е. название потока и сообщение стэка. Ок, тут вроде понятно, переопределили метод. 2) Затем создаем объект нашего класса который наследуется от обычной нити (Thread) TestedThread commonThread = new TestedThread(handler); Конструктор которого получает наш Thread.UncaughtExceptionHandler handler и вызывает метод setUncaughtExceptionHandler(handler); Зачем? ведь это обычная нить, что там необработанное может быть? 3) Но интереснее следующее Thread threadA = new Thread(commonThread, "Нить 1"); Thread threadB = new Thread(commonThread, "Нить 2"); Это мы создали нити и в них передали ту основную нить описанную чуть выше, у которой как раз и имеется переменная из пункта 1 которая переопределяет uncaughtException. Получается основная нить уже должна обработать оба исключения, вообще не понятно. А еще то, что по идее в методе public TestedThread(Thread.UncaughtExceptionHandler handler) { setUncaughtExceptionHandler(handler); //это получается не нужно? Ведь мы отдельно обрабатаем каждый поток start(); } Кто понял, разжуйте пожалуйста. Гугл выдал 2 статьи, там бред со свингом и выводом окна, вывести можно как угодно и чем угодно, при чем тут это вообще.
Александр19 уровень, Самара
24 апреля, 05:52
http://java-course.ru/articles/exceptions/
DenisKa19 уровень, Екатеринбург
7 апреля, 16:48
А кто-нибудь пробовал бухать и решать задачи? Какие успехи?
Андрей34 уровень
8 апреля, 12:14
Пробовал. Не очень получается, внимание рассеивается.
Владимир19 уровень, Москва
17 апреля, 06:53
Правильно. Потому что ничто не должно отвлекать от процесса пития. )
Rodion Golovin23 уровень, Санкт-Петербург
3 апреля, 15:22
Взаимная блокировка Если я правильно понял: если в методе main после start первого объекта поставили блокировку на запуск t2.start() с помощью join первого объекта, то программа вернется в run первого объекта и пропустит строчку t2.join();, как ни в чем не бывало, т.к. старта run второго объекта еще не случилось
Nubas18 уровень, Новосибирск
5 мая, 22:29
зачем такие сложности? прервите любой из 2 потоков, второй прервется автоматически
Сергей Подуст20 уровень, Киев
29 марта, 10:36
Теперь по задаче "клубок", в нити под номером 3, имеется ввиду, что в самом начале выводится Ура и потом через каждые 500 мс. ВО многих задачах в нулевой момент времени выводить не нужно. Чтобы было понятно, покажу что нужно написать, чтобы валидатор не ругался: System.out.println("Ура"); Thread.sleep(500);
Сергей Подуст20 уровень, Киев
29 марта, 09:05
Ребят, будьте осторожны в задаче "Последовательный вывод файлов", условие вывода описано как [все тело первого файла] [все тело второго файла] не означает, что эти скобочки должны быть в вашем выводе, тут они добавлены для красоты, то есть, если ваши файлы файл1: 1 2 3 файл2: 4 5 6 то вывод должен быть 1 2 3 4 5 6