
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
18.09.2005, 18:05
|
|||
|---|---|---|---|
|
|||
Разделение static-переменных между процессами |
|||
|
#18+
Добрый день. Скажите пожалуйста, надо ли делать метод синхронизированным? или отказаться от использования статических методов, или все будет нормально работать и так.? вот есть класс FormFactory, который генерит HTML-формы (его использует сервлет). Содержимое HTML-формы зависит от некоторых параметров, например от группы пользователя, который запрашивает форму. если пользователь Гость то форма ограниченная, если же он Админ, то форма полная. вот отрывок: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Т.к. запускается несколько потоков сервлета, то не будет ли конфликтных ситуаций, когда пользователь получит другую форму вместо той которая ему требуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.09.2005, 18:24
|
|||
|---|---|---|---|
|
|||
Разделение static-переменных между процессами |
|||
|
#18+
хотелось бы послушать экспертов в области мультипоточного программирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.09.2005, 20:33
|
|||
|---|---|---|---|
|
|||
Разделение static-переменных между процессами |
|||
|
#18+
unicornmirageДобрый день. Скажите пожалуйста, надо ли делать метод синхронизированным? или отказаться от использования статических методов, или все будет нормально работать и так.? вот есть класс FormFactory, который генерит HTML-формы (его использует сервлет). Содержимое HTML-формы зависит от некоторых параметров, например от группы пользователя, который запрашивает форму. если пользователь Гость то форма ограниченная, если же он Админ, то форма полная. вот отрывок: Код: plaintext 1. 2. 3. Т.к. запускается несколько потоков сервлета, то не будет ли конфликтных ситуаций, когда пользователь получит другую форму вместо той которая ему требуется? А что мешает сделать так? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. В конце концов, можешь написать static synchronized String getForm(int userGroup) тогда внутри метода getForm в один момент времени будет находиться один поток - остальные будут ждать. Но в этом случае VALUE могут изменить при желании другие потоки из других классов пакета не входя в getForm(), т.к он package-private а не private. А вообще писано кондово - почитай про Strategy design pattern. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.09.2005, 20:59
|
|||
|---|---|---|---|
|
|||
Разделение static-переменных между процессами |
|||
|
#18+
а где можно почитать по русски про Strategy design pattern? если не сложно, дайте пожалуйста ссылочку... что касается основоного вопроса, то убедился что необходимо все же делать синхронизацию метода. спасибо за совет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.09.2005, 23:32
|
|||
|---|---|---|---|
|
|||
Разделение static-переменных между процессами |
|||
|
#18+
unicornmirageа где можно почитать по русски про Strategy design pattern? если не сложно, дайте пожалуйста ссылочку... что касается основоного вопроса, то убедился что необходимо все же делать синхронизацию метода. спасибо за совет! Третья ссылка по запросу "Паттерны проектирования Strategy" в google http://citforum.ru/SE/project/pattern/p_2.shtml#3.2.9 Чтобы этот паттерн адаптировать к твоей задаче надо определить интерфейс IUserGroup с методом String getValue() и сделать его реализации - GuestUserGroup, MemberUserGroup и AdminUserGroup. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2005, 02:14
|
|||
|---|---|---|---|
Разделение static-переменных между процессами |
|||
|
#18+
В конце концов, можешь написать static synchronized String getForm(int userGroup) тогда внутри метода getForm в один момент времени будет находиться один поток - остальные будут ждать. иногда вместо паттернов проектирования неплохо бы прикладывать здравый смысл.. 1. используй ThreadLocal http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ThreadLocal.html данные, сохраненные в ThreadLocal не пересекаются между тредами или 2. сохраняй данные пользователя, необходимые для генерации формы, в сессии HttpServletRequest request = ... request.getSession().setAttribute("userGroup", userGroup); обычно делают вторым способом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.09.2005, 11:01
|
|||
|---|---|---|---|
|
|||
Разделение static-переменных между процессами |
|||
|
#18+
ThreadLocal - настоятельно не советую. Почитайте отзывы о этом классе в форумах. У меня, к примеру, под TomCat-ом не все переменки, которые попадают в ThreadLocal чистятся и виноват похоже в этом TomCat ThreadPool и похоже это никак не лкчится :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2151440]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 482ms |

| 0 / 0 |
