Если вопрос буквально:
В приведенном ниже фрагменте кода, сколько потоков создаются?
... тогда ответ . Фрагмент кода не создает любые темы сами по себе. Конечно, поток создается для этого кода для запуска, и поскольку этот код больше не создается, другим разумным ответом будет 1. Но если вы говорите о том, сколько потоков использует VM, тогда (обычно) должно быть не менее двух (для GC), в большинстве случаев больше (диспетчер, ссылочный обработчик, финализатор и т. д.), но полностью зависит от конфигурации. Даже тогда, это не всегда будет два, вы можете иметь совершенно конформный JVM, что не делает сбор мусора на всех (и действительно рано JavaCard В.М. сделал именно это.)
Конечно, это предполагает что интервьюер спрашивал о Java-потоках - если мы переходим на уровень ОС, то снова у нас есть еще один уровень неизвестности относительно того, как система печатает вышеприведенную строку, если вообще!
Учитывая вышеизложенное, мой ответ должен был уточнить, что именно имел в виду интервьюер по этому вопросу, потому что сам по себе это немного двусмысленно и не является большим вопросом на мой взгляд. Он читается как трюк, но без достаточной информации, чтобы ответить на него правильно - какой бы ответ вы ни дали, без дальнейших разъяснений, можно было бы считать неправильным. Хотя, как уже отмечал NoobUnchained, упоминание о том, что вы можете использовать Thread.activeCount()
, чтобы захватить количество используемых потоков VM, не идет против вас.
Конечно, возможно, цель вопроса заключалась не столько в техническом ответе, сколько в том, чтобы выяснить, что именно подразумевалось под его интервью - не такая неслыханная тактика!
'System.out.println (Thread.activeCount());' или 'Thread.getAllStackTraces()' – NINCOMPOOP