Size: a a a

2017 January 17

DS

Dmitriy Shilnikov in learn.java
Всем привет. Я совсем начинающий и у меня есть вопрос.
Я читаю книжку, в ней во многих примерах у сервлетов есть поле с типом HashMap, которое постоянно используется в jsp (передаётся через HttpServletRequest).
Гугл говорит, что HashMap не threadsafe, но даже если бы он был threadsafe, то при изменении объекта итераторы бы всё равно ломались.
Я чего-то не понимаю, или в реальной жизни так делать нельзя, т.к. HashMap может быть изменён в другом потоке (в примерах точно может) и приложение сломается?
источник

J

James Tiberius Kirk in learn.java
не сломается
источник

J

James Tiberius Kirk in learn.java
каждый поток — новый HashMap
источник

DS

Dmitriy Shilnikov in learn.java
а за счёт чего это достигается? HashMap копируется полностью со всем содержимым для каждого потока?
источник

J

James Tiberius Kirk in learn.java
поясни немного, что за HashMap и что за содержимое у нее?
источник

DS

Dmitriy Shilnikov in learn.java
в книге jpa и hibernate находятся ближе к концу, поэтому с помощью HashMap и LinkedHashMap эмулируется СУБД, т.е. когда со страницы пользователь вносит новые данные, они заносятся в этот объект
источник

J

James Tiberius Kirk in learn.java
да, мне кажется что так делать нельзя
источник

J

James Tiberius Kirk in learn.java
потоками веб сервера руководишь не ты и возможности синхронизировать доступ к мапе нет, следовательно ее использование в таком виде чревато
источник

J

James Tiberius Kirk in learn.java
можешь вместо нее использовать ConcurrentHashMap
источник

DS

Dmitriy Shilnikov in learn.java
я вот не совсем понял, почему автор не использует ConcurrentHashMap, вроде действительно логичнее было
источник

DS

Dmitriy Shilnikov in learn.java
спасибо за ответ
источник

J

James Tiberius Kirk in learn.java
чтобы не пудрить новичкам мозги сложностями, либо книга старая и тогда этой мапы не было
источник

DS

Dmitriy Shilnikov in learn.java
не настолько старая )
источник

DS

Dmitriy Shilnikov in learn.java
наверное, действительно, чтобы не усложнять
источник

VC

V C in learn.java
подскажите
источник

VC

V C in learn.java
что-то затыкается
источник

VC

V C in learn.java
List<String> allLines = Files.readAllLines(file1, StandardCharsets.UTF_8);
источник

VC

V C in learn.java
Exception in thread "main" java.nio.file.NoSuchFileException
источник

J

James Tiberius Kirk in learn.java
ну и щито непонятного?
источник

J

James Tiberius Kirk in learn.java
но сач файл
источник