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

Спасибо, за Ваши комментарии!!!
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34170614
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34170897
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через стандартные методы синхронизации в Java: synchronized, java.util.concurrent и т.д.
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34172329
грузин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
synchronized - будет последовательность, потеря производительности системы....
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34172333
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот с SingleThreadModel у вас будет потеря производительности, а с грамотным использованием синхронизации не такая уж и большая.
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34172877
грузин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот объясните тупому, как да чего. Имеется сервлет (для упрощения изложения буду использовать реализацию веб компоновки 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
SingleThreadModel деприкайт
    #34172886
грузин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас реализовано вот так

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

service {
...getConection()....
synchronized {
операция №1...
операция № 2
}
.... трали вали
connection.close();
}
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34173002
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или я неправильно понял вашу мысль, или если вам нужна атомарность запроса к базе данных, то это делается через batch-запросы.
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34173023
грузин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Естественно я упоковываю фразы "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
SingleThreadModel деприкайт
    #34174029
грузин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... народ ну где же ваши комментарии...
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34174934
грузин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну может что подскажем?
...
Рейтинг: 0 / 0
SingleThreadModel деприкайт
    #34176404
грузин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то комментарий нема, пойду по другим форумам прогуляюсь
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / SingleThreadModel деприкайт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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