|
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
|
|
Синхронизация PreparedStatement26.02.2008, 13:13. Показов 1745. Ответов 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 не работатет Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|