2015-04-23 1 views
0

Я работаю с проектом базы данных, разработанным с использованием JSP, сервлета. Это проект ERP с более чем 20 пользователями. Мой босс сказал мне использовать Multi-theading в проекте. Скажите, пожалуйста, как решить, какие страницы должны быть muti-threaded, а какие нет.Какую страницу сделать isThreadSafe = false в jsp

+0

Веб-контейнер многопоточный и предназначен для многопоточности. Просто не сохраняйте какое-либо состояние в сервлетах и ​​даже меньше в JSP (у которых не должно быть никакого Java-кода). –

ответ

0

Многопоточность Java в jsp не является допустимым аргументом как таковой, поскольку, как сказал @JBNizet, веб-контейнер уже обрабатывает многопоточность для вас.

Что вы можете сделать, хотя использовать многопоточность в случаях, когда у вас есть код, который можно запускать асинхронно.

Давайте предположим, что у вас есть сценарий, где:

obj1 = obj2.getValFromDb(obj3.getSessionId(obj4.getId())); 

В этом многопоточность не может быть использована, потому что задачи должны быть выполнены последовательно, чтобы получить в результате. Таким образом, один поток все, что нужно ...

Но в примере ниже ...

val = getValFromDb()+getValFromSRC1()+getValFromSRC2(); 

Суб-результаты могут быть вычислены в отдельных потоках.

Итак, вы должны сделать оценку своего кода и использовать многопоточность соответствующим образом.

Что касается директивы isThreadSafe в jsps, единственное, что вы можете сделать, это отключить многопоточность (которая находится напротив вас ищет). Как спецификация говорит:

Использование этого SingleThreadModel интерфейс гарантирует, что только один потока одновременно будет выполняться в сервисном метода заданных сервлет экземпляра. Важно отметить, что эта гарантия применяется только к экземпляру каждого сервлета, поскольку контейнер может выбрать объединение таких объектов . Объекты, доступные более чем одному экземпляру сервлета одновременно, например, экземпляры HttpSession, могут быть доступны в любое время для нескольких сервлетов, включая те, которые реализуют SingleThreadModel.

Смежные вопросы