Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / SingleThreadModel деприкайт / 12 сообщений из 12, страница 1 из 1
01.12.2006, 12:20:53
    #34169930
грузин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Уважаемые господа (товарищи)!!!
Вот объясните пролетариату вот такую вещь. В старых спецификациях servlet, имелся многопотоковый режим работы и монопотоковый режим (ну если не реализовать или реализовать интерфейс SingleThreadModel). У меня в старых прогах множество сервлтов релизованы с "расширением" SingleThreadModel, так как требовалось чтобы некоторые операции были "атомарными" и еще параллельно выполняемы. Подход "synchronized" методов не канает, так как возникнит "цепочка" операции, от которой пострадает производительность системы.... В итоге с какой коцепцией сейчас руководствоваться, чтобы организовать параллельную обработку и при этом не было пересечений (я про атомарные операции)?

Спасибо, за Ваши комментарии!!!
...
Рейтинг: 0 / 0
01.12.2006, 14:29:19
    #34170614
Alexey Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
...
Рейтинг: 0 / 0
01.12.2006, 15:23:20
    #34170897
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Через стандартные методы синхронизации в Java: synchronized, java.util.concurrent и т.д.
...
Рейтинг: 0 / 0
02.12.2006, 13:43:26
    #34172329
грузин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
synchronized - будет последовательность, потеря производительности системы....
...
Рейтинг: 0 / 0
02.12.2006, 13:46:44
    #34172333
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
вот с SingleThreadModel у вас будет потеря производительности, а с грамотным использованием синхронизации не такая уж и большая.
...
Рейтинг: 0 / 0
03.12.2006, 13:00:08
    #34172877
грузин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Вот объясните тупому, как да чего. Имеется сервлет (для упрощения изложения буду использовать реализацию веб компоновки model1 (не MVC)). Для реализации моей задачи имеется SERVLET+JNDI+ORACLE. Для формирования отчета происходит 2 операции в БД, это выглядит примерно так
--------------------
Service {
коннект = getConnection(JNDI-ресурс)….
Операция №1……. (производим insert-ы)….
Операция №2 …….(выполняем select)…..
Коннект.сlose()….
}
--------------------
Операции №1 и №2 должны выполниться в рамках одной сессии с БД, т.е. между этими операциями никто не смог «пролезть», т.е. необходимо их выполнить в рамках одной транзакции. На сколько я понимаю (если ошибаюсь поправьте мои мысли), для снижения времени коннекта с БД с помощью JNDI (с фабрикой «oracle.jdbc.pool.OracleDataSourceFactory" ) создается пул сессии и при раздачи коннектов из пула берется не «активный» коннект. Ну и теперь в моей тупой голове парадокс. Нужно ли синхронизировать операции №1 и №2 или система обеспечит единый не пересекающее сессионное пространство с БД? По идеи я коннект из пула забрал и не вернул его обратно в пул (методом close()), по идеи если другой процесс захочет произвести аналогичную операцию, он возьмет другой коннект с БД…. Короче что-то в моей голове неразбериха. Если можете помогите встать на путь истинный ….
...
Рейтинг: 0 / 0
03.12.2006, 13:15:08
    #34172886
грузин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Сейчас реализовано вот так

---
init {
получение ссылки на JNDI - ресурс
}

service {
...getConection()....
synchronized {
операция №1...
операция № 2
}
.... трали вали
connection.close();
}
...
Рейтинг: 0 / 0
03.12.2006, 15:38:41
    #34173002
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Или я неправильно понял вашу мысль, или если вам нужна атомарность запроса к базе данных, то это делается через batch-запросы.
...
Рейтинг: 0 / 0
03.12.2006, 16:05:01
    #34173023
грузин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Естественно я упоковываю фразы "insert" в батч пакет

..... Операция №1
String[] ss = basket_temp.getStringKeys();
PreparedStatement ps = conn.prepareStatement("insert into t001_007_ (f01) values (?)");
((OraclePreparedStatement)ps).setExecuteBatch (count_param);

for (int i=0;i<count_param;i++ ) {
ps.setString(1,"ss ");
ps.executeUpdate();
}
((OraclePreparedStatement)ps).sendBatch();
....... Оперция №2
String sql ="select * from что-то";
rset = stmt.executeQuery(sql);
...
Рейтинг: 0 / 0
04.12.2006, 11:23:20
    #34174029
грузин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Ну... народ ну где же ваши комментарии...
...
Рейтинг: 0 / 0
04.12.2006, 14:43:58
    #34174934
грузин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Ну может что подскажем?
...
Рейтинг: 0 / 0
05.12.2006, 08:09:19
    #34176404
грузин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SingleThreadModel деприкайт
Что-то комментарий нема, пойду по другим форумам прогуляюсь
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / SingleThreadModel деприкайт / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]