#java #многопоточность
Заранее скажу, что ниже будет немного воды, так как я ниже попытаюсь максимально точно и понятно описать суть своего вопроса. Возможно покажется вопрос простым, но речь не о том, как можно создать поток общепринятыми способами, и что для этого надо использовать. Мне надо понять, каким образом Java на основе Thread-а, Runnable-а и методов run() и start() создает отдельный поток. В смысле, скажем, ну просто теоретический возьмем, что я захочу в один прекрасный день написать такой класс, по подобии Thread но не наследоваться от самого Thread а вообще отдельный класс создать, каким то образом пытаться сделать его таким же как и Thread, чтоб он мог сам без помощи Thread и Runnable, создавать или просто помочь создавать новые потоки, как это делает Thread вместе с Runnablе. Что я должен буду для этого сделать? Ну или просто суть вопроса: как удается Thread вместе Runnable создавать отдельный поток? Мне интересует сам механизм этого процесса создания и включения в работу программы нового потока. дополнительно: Пожалуйста, обязательно укажите в ответе чем механизм создания нового потока отличается от создания и вызова потока метода main().
Ответы
Ответ 1
Пожалуйста, обязательно укажите в ответе чем механизм создания нового потока отличается от создания и вызова потока метода main(). Ничем Цепочка выглядит так: - Вы пишите код, который просит JVM создать поток - JVM просит ОС создать поток - ОС создаёт поток и регулирует его исполнение. У ОС есть ресурсы CPU и она выделение их для конкретных потоков, регулирует какой поток и сколько будет занимать ресурсы. Есть "Задача об обедающих философах". Когда за ограниченные ресурсы борются несколько потребителей. Это уровень ОС, это её задача. Поэтому, решать это нужно не на Java.Ответ 2
Если посмотреть исходники метода Thread#start, то видно, что там вызывается метод: private native void start0(); то есть запуск потока реализован как-то нативно. Если хочется написать свой класс class MyOwnBestThread, то придется использовать jni, чтобы создавать нативные потоки.
Комментариев нет:
Отправить комментарий