Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Чем отличаются потоки от нитей?

Вроде как должно быть одно и тоже, так как thread переводят и как "поток", и как "нить". Вроде как, при создании потока (нити) и в послед запуске он может разбиваться на нити?
Это поток порождает себе подобных (потоки такие же как и он) или же он порождает нити (которые видимо являются неполноценными потоками)?
А еще, являются ли потоки чтения (с консоли, файла) и вывода (в файл) такими же потоками?
Почему тогда мы не вызываем у них методы start и пр., а только close?
Или же можно запустить нить создав лишь объект их типа?
Неужели это все одни и те же потоки? И еще, наличие 2-х нитей c thread и с runnable обусловлено тем, что с 1-ым нельзя наследоваться, но легче запускать, а со 2м можно наследоваться, но сложнее запускать?


Ответ

Вроде как должно быть одно и тоже , тк thread переводят и так , и так.
Одно и то же. Вот если встретите термин Fiber - там все немного интересней, взаимодействие с ним происходит как с потоком, но классическим ОС-потоком он не является.
Вроде как , при создании потока(нити) и в послед запуске он может разбиваться на нити?
Разбиваться не может, порождать - может. Порожденные потоки имеют ровно те же возможности.
А еще , являются ли потоки чтения(с консоли,файла) и вывода(в файл) такими же потоками?
Нет, мы говорим про потоки выполнения, а это - потоки данных, т.е. просто последовательная перекачка байтов из одного места в другое.
И еще , наличие 2х нитей c thread и с runnable обусловлено тем , что с 1ым нельзя наследоваться , но легче запускать ,а со 2м можно наследоваться , но сложнее запускать?
не берусь судить за архитекторов API, но наследоваться от класса потока вам не стоит вообще никогда. В большинстве случаев вам так вообще потребуется ExecutorService, который возьмет на себя управление потоками, а вы будете просто отдавать ему задачи на выполнение в виде Runnable или аналога.

Комментариев нет:

Отправить комментарий