Зачем использовать char [] вместо String? - PullRequest
9 голосов
/ 21 ноября 2011

В Thread.java , строка 146, я заметил, что автор использовал char[] вместо String для поля имени.Есть ли какие-то причины производительности, о которых я не знаю?getName() также переносит символ в строку перед возвратом имени.Не лучше ли просто использовать String?

Ответы [ 3 ]

6 голосов
/ 21 ноября 2011

В общем да. Я подозреваю, что char[] использовался в Thread по соображениям производительности, еще в те времена, когда такие вещи в Java требовали всех усилий для достижения достойной производительности. С появлением современных JVM такие микрооптимизации уже давно стали неважными, но это так и осталось.

В старом исходнике эпохи Java 1.0 много странного кода, я бы не стал обращать на него слишком много внимания.

2 голосов
/ 21 ноября 2011

Трудно сказать.Возможно, они имели в виду некоторые оптимизации, возможно, человек, который написал этот код, просто более привык к массивам строк * C-style char*, или, возможно, к тому времени, когда этот код был написан, они не были уверены, будут ли строки неизменными илине.Но с этим кодом каждый раз, когда вызывается Thread.getName(), создается новый массив символов, так что этот код на самом деле тяжелее в GC, чем просто использование строки.

1 голос
/ 24 ноября 2011

Может быть, причина была в защите?Строка может быть изменена с отражением, поэтому автор хочет скопировать на чтение и запись.Если вы делаете это, вы можете также использовать массив символов для более быстрого копирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...