Java, Вдвое больший по сравнению с Преобразованием строк без форматирования

Сессия не ориентирована на многопотоковое исполнение и ни один получение не, методы установки, как гарантируют, будут ориентированы на многопотоковое исполнение. В целом в контейнере сервлета необходимо принять, чтобы быть в многопоточной среде и не если инструменты безопасны.

Это также идет для объектов, которые Вы храните на сессии. Сама сессия не будет управлять хранившим объектом, но можно получить объект в другом потоке и попытаться управлять им. Вам решать для исследования собственного кода, чтобы видеть, возможны ли условия состязания.

пример кода, который Вы отправили, допустим, но проблема может существовать вне ограниченного объема Вашего примера. Это гарантирует, что нет никаких условий при установке на сессию, но нет ничего предотвращающего другой поток для переопределения набора. Если код в Вашем запросе зависит значения, остающегося неизменным, Вы могли бы все еще быть в беде.

29
задан Mizipzor 27 October 2009 в 14:41
поделиться

7 ответов

Используйте Long:

long id = 654987;
String str = Long.toString(id);
20
ответ дан 28 November 2019 в 01:13
поделиться

Используйте фиксированный NumberFormat (в частности, DecimalFormat ):

double value = getValue();
String str = new DecimalFormat("#").format(value);

в качестве альтернативы просто приведите к int (или long , если диапазон значений слишком велик):

String str = String.valueOf((long) value);

Но опять же: почему у вас целочисленное значение (т.е. «целое» число) в double переменная в первую очередь?

32
ответ дан 28 November 2019 в 01:13
поделиться

Если то, что вы сохраняете, является идентификатором (т.е. что-то, что используется только для идентификации другого объекта, фактическое числовое значение которого не имеет значения), то вам не следует использовать Double для его хранения. Точность почти наверняка вас облажает.

Если ваша база данных не поддерживает целочисленные значения, вам следует хранить идентификаторы в виде строк. При необходимости сделайте строку строковым представлением целого числа, которое вы хотите использовать. При соответствующем использовании начальных нулей вы можете сделать алфавитный порядок строки таким же, как числовой порядок целых чисел.

Это должно помочь вам решить проблему.

1
ответ дан 28 November 2019 в 01:13
поделиться

Как насчет String.valueOf ((long) value);

6
ответ дан 28 November 2019 в 01:13
поделиться

Если это целочисленный идентификатор в базе данных, используйте вместо него целое число. Затем он будет отформатирован как целое число.

6
ответ дан 28 November 2019 в 01:13
поделиться

А как насчет:

Long.toString(value)

или

new String(value)
2
ответ дан 28 November 2019 в 01:13
поделиться
    double d = 56789;
    String s = d+"";
-3
ответ дан 28 November 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: