|
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
|
|
Синхронизация PreparedStatement26.02.2008, 13:13. Показов 1727. Ответов 8
Метки нет (Все метки)
Вызываются разные статические процедуры одного класса
которые используют одни и те же статические PreparedStatement. Можно ли синхронизировать их так что бы один и тот же PreparedStatement не работал ОДНОВРЕМЕННО(!) в нескольких процедурах даже если процедуры были вызваны одновременно.
0
|
|
| 26.02.2008, 13:13 | |
|
Ответы с готовыми решениями:
8
PreparedStatement
Установка даты в PreparedStatement для сохранения в БД PostgreSQL |
|
1 / 1 / 5
Регистрация: 30.04.2007
Сообщений: 225
|
|
| 26.02.2008, 17:19 | |
|
мне кажется, synchronized по этой статической переменной вокруг каждого работающего с ней блока должен помочь... или с этим возникают проблемы?
0
|
|
|
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
|
|
| 27.02.2008, 10:45 [ТС] | |
|
Самое обидное что не могу проверить. Я пока пишу общие рекомендации по ускорению работы(чужой) программы. В ней эти переменные пока создаются динамичски, но мне кажется что если сделать их статическикм и использовать их постоянно есть риск что будет перекрытие. Я ни разу ничего в жизни не синхронизировал. И перед тем как написать свои предложения хотел бы посоветоваться, что бы не написать совсем уже лажу
0
|
|
|
0 / 0 / 0
Регистрация: 27.02.2008
Сообщений: 56
|
|
| 27.02.2008, 11:24 | |
|
Такой риск есть: в той СУБД, которую Вы используете, реализация PreparedStatement может быть не синхронизированной, так что нужно принять меры. Предложение насчет synchronized блоков работать будет, если не забыть написать synchronized(myPreparedStatementObject), а не synchronized(this) ;-) Однако, гораздо лучше сделать synchronized реализацию интерфейса PreparedStatement, в которой каждый метод будет заниматься только тем, что вызывать соответствующий метод PreparedStatement объекта, который Вы получили от Connection.
0
|
|
|
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
|
||||||
| 27.02.2008, 15:48 [ТС] | ||||||
|
Вообще я использую DB2. Но не важно. Мне очень понравилась идея написать синхронный PreparedStatement, так как это как я надеюсь скроет детали синхронизации от пользователя. Только я не понял, а как это сделать ?
)) Вот пример
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.02.2008
Сообщений: 56
|
||||||
| 28.02.2008, 07:34 | ||||||
|
Что касается synchronized реализации PreparedStatement:
Однако, каюсь, основную проблему-то в торопях и упустил :-( В Вашем случае (когда static PreparedStatement используется только из методов одного объекта) все, вероятно, можно решить без переписывания методов. Достаточно изменить объявления: synchronized void callSTP1(... synchronized void callSTP2(... Почему 'вероятно': если на самом деле в методах callSTP1, callSTP2 выборки из БД в них не занимают основную часть времени выполнения, то придется применять synchronized блоки, в данном случае можно synchronized(this) - иначе теряется смысл многопоточной реализации. Однако, лично меня от такой практики коробит: можно где-нибудь прошляпить это 'synchronized', и потом удивляться всяким чудесам при внедрении. Поэтому, если ваши запросы к БД хорошо типизируются, их нужно вынести в отдельные методы, которые будут объявлены synchronized, и в них через параметры передавать все аргументы SQL запроса.
0
|
||||||
|
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
|
|
| 28.02.2008, 10:36 [ТС] | |
|
Спасибо.
В общем я понял. Я попробую сделать маленький примерчик и погонять его на своей машине. Потом посмотрю что работает быстрее.
0
|
|
|
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
|
|
| 28.02.2008, 10:43 [ТС] | |
|
... Причём идея создать синхронные данные для черпания данных мне нравится больше всего :-)? хотя их возможно будет многовато, но это будет как мне кажется надёжно и оптимально по скорости.
0
|
|
|
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
|
|
| 28.02.2008, 10:53 [ТС] | |
|
Опечатка->Не синхронные данные а синхронные методы
0
|
|
| 28.02.2008, 10:53 | |
|
Помогаю со студенческими работами здесь
9
PreparedStatement
JDBC: PreparedStatement PreparedStatement + MySQL PreparedStatement не работатет Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|