| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > synchronize |
| Автор: DEMOVERSION 28.10.2005, 14:53 | ||
| Скажите правильно ли зделана synchronize-ция? Надо ли мне вообше ее? Надо синхронизуровать всю ф-цию? Спасибо!
|
| Автор: AntonSaburov 28.10.2005, 16:06 |
| По идее все верно, только непонятно зачем. Если уж кто-то удалил, то второй запрос на удаление с тем же ИД просто ничего не удалит. Да и в случае использования SQL о целостности данных будет он заботится - незачем дергаться. |
| Автор: Souljah 28.10.2005, 16:36 |
| имхо тут синхронизация вообще не нужна - ни один из приведенных методов не меняет состояние класса (поля) |
| Автор: pvo 28.10.2005, 17:03 |
| DEMOVERSION Насчет синхронизации - вроде она не нужна. И вопрос насчет работы с базой - она транзакции поддерживает? Если да, то приведенный код странный. |
| Автор: val 28.10.2005, 17:23 |
| Практически у любой современной базы данных все запросы к ней являются синхронизированными. Так что можно и не мучится, но идеологически все верно. |
| Автор: anonymouse 28.10.2005, 17:37 |
| А я как обычно че-то не понял. Зачем синхронизовать если ети методы вызываются по порядку ? Синхронизация нужна только если метод будет вызываться из разных потоков.По этому идеологически это как раз написано не правильно. |
| Автор: Souljah 28.10.2005, 17:38 |
| почему идеологически верно? executeUpdateSQL не меняет состояние класса, у переменных scope - метод, они существуют только в контексте конкретного потока. зачем синхронизировать? |
| Автор: AntonSaburov 28.10.2005, 18:33 | ||
Идеологически не верно, здесь это не надо. Я имел в виду, что так конечно можно, только это напоминает в Москву из Питера через Одессу. |
| Автор: DEMOVERSION 2.11.2005, 14:02 |
| Код может и не идеальный но я к етому двигаюсь. Я хочу немного добавить - ети ф-ции, ето часть веб-програмы(JSP)!!!! Просто з не знаю как будет работать если useroff будет много. БД - Access. Что будет если я буду редактировать а кто-то другой будет удалять даные из таблици? PS: в примере было только удаление, а еше есть add, remove, edit. All uses updateSQL function. |
| Автор: corewithin 2.11.2005, 20:05 |
| не знаю чем вы руководствуетесь, когда говорите, что тут не нужна синхронизация... она не нужна только в том случае, если это сингл приложение... в случае клиент-сервер приложения обязательна синхронизация на серверной стороне... |
| Автор: Stampede 2.11.2005, 20:09 | ||
Много - это скока? Если только не тысяча запросов в секунду, то самая простая стратегия синхронизации, она же самая действенная - это просто тупо сериализовать все входящие запросы. Я знаю, звучит как крамола, но если вдуматься, ничего крамольного в таком подходе нет - при одном, однако, условии: что каждый запрос будет отрабатываться без тормозов. Как этого добиться - вопрос отдельный, но я тебя уверяю, решается он гораздо легче, чем пытаться выстроить более или менее вменяемую стратегию синхронизации. Если интересно, почему просто сделать все датабазные методы synchronized - это не очень хорошая идея, то могу в общих чертах рассказать. Но чтобы разговор был предметным, мне нужно знать, что у тебя за приложение и какие пользовательские сценарии у тебя предусмотрены. |
| Автор: pvo 3.11.2005, 00:58 | ||
В целом согласен. Но: 1. Все-таки речь должна идти не о тысячах запрсов в секунду ... Интереса ради попробовал выполнить простой update (изменение одной строки в таблице, кот. имеет 2 индекса и содержит около 50 записей) на локальном Firebird - вместе с коммитом операция заняла от 20ms до 100ms. При работе с удаленной базой время увеличится - будет, скорее всего, от 100ms. ИМХО, тут стоит говорить о максимум 10-20 запросах в секунду. 2. синхронизация методов доступа к базе не спасет, если вдруг захочется запустить приложение в кластере. Или один и тот же код работает в 2 разных веб приложениях. |
| Автор: Stampede 3.11.2005, 01:52 |
| pvo, в соседнем топике идет обсуждение похожей темы. Поскольку мы в данном случае говорим не столько об использовании Java-примитивов синхронизации, сколько о вполне конкретной задаче синхронизации кода сервлетов/JSP (каковой вопрос выходит далеко за рамки просто синхронизации потоков), то я предлагаю продолжить обсуждение в подфоруме J2EE, тема http://forum.vingrad.ru/index.php?showtopic=69100&hl=. |