Комментарии (8)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
GrooveDevelop
Уровень 24
23 октября 2019, 14:33
GrooveDevelop
Уровень 24
17 октября 2019, 14:57
С 20.08.19 по 17.10.19 - 18 уровней Решенных задач - 519 Нерешенных задач - 30
GrooveDevelop
Уровень 24
17 октября 2019, 14:32
1. Экспресс-учебник по regex, для того, чтобы потрогать. 2. Ресурс на англ. для изучения regex. 3. Две ссылки на JavaRush-статьи. Номер раз и номер два. 4. Официальная документация. 5. Плэйлист на youtube. 6. Регулярные выражения на хабре линк раз, два, три 7. Легкая вводная статья на quizful. 8. И наконец ресурсы для теста своих регулярных выражений: конкретно под Java, два, три.
GrooveDevelop
Уровень 24
8 октября 2019, 11:29
GrooveDevelop
Уровень 24
8 октября 2019, 11:28
В качестве основного преимущества при наследовании класса Thread заявляется полный доступ ко всем функциональным возможностям потока на платформе Java. Главным недостатком же считается как раз сам факт наследования, так как в силу того, что в Java применяется только одиночное наследование, то наследование классу Thread автоматически закрывает возможность наследовать другим классам. Для классов, отвечающих за доменную область или бизнес-логику, это может стать серьезной проблемой. Правда негативное воздействие, возникающее из-за невозможности наследования, можно ослабить, если вместо него применить прием делегирования или соответствующие шаблоны проектирования. Использование интерфейса Runnable по умолчанию лишено этого недостатка, но если реализовать задачу таким способом, то придется потратить дополнительные усилия на ее запуск. Как было показано в листинге 2, для запуска Runnable-задачи все равно потребуется объект Thread, также в этом случае исчезнет возможность прямого управления потоком из задачи. Хотя последнее ограничение можно обойти с помощью статических методов класса Thread (например, метод currentThread() возвращает ссылку на текущий поток). Поэтому сделать однозначный вывод о превосходстве какого-либо подхода довольно сложно, и чаще всего в приложениях одновременно используются оба варианта, но для решения задач различной направленности. Считается, что наследование класса Thread следует применять только тогда, когда действительно необходимо создать «новый вид потока, который должен дополнить функциональность класса java.lang.Thread», и подобное решение применяется при разработке системного ПО, например, серверов приложений или инфраструктур. Использование интерфейса Runnable показано в случаях, когда просто «необходимо одновременно выполнить несколько задач» и не требуется вносить изменений в сам механизм многопоточности, поэтому в бизнес-ориентированных приложениях в основном используется вариант с интерфейсом Runnable.
GrooveDevelop
Уровень 24
6 октября 2019, 09:39
GrooveDevelop
Уровень 24
3 октября 2019, 06:36
GrooveDevelop
Уровень 24
2 октября 2019, 13:14