Witam wszystkich! Pisząc swoje programy w javie natknąłem się na problem współbieżności jego wykonywania. Chciałbym napisać aplikację która będzie wykorzystywać jedną bazę danych, ale oparta będzie na wielu wątkach. Pytanie do Was jest następujące: czy możliwe jest tak zsynchronizować to zadanie aby działało to sensownie szybko? Obecnie z moich testów wynika iż przy utworzeniu 4 wątków owszem program pracuje około 4 razy szybciej(mam 4 rdzeniowy procesor), ale dopóki nie dodam bloków synchronized przy dodawaniu i pobieraniu z bazy danych(bez bloków w bazie jest bałagan i nie służy ona do niczego). Nadmienię, jedyną przeszkadzającą mi rzeczą jest problem dodawania do bazy, gdyż jeżeli dana jest już w bazie każdy wątek ma swój obszar roboczy w pamięci na czym może działać - zatem problemem jest tylko i wyłącznie dodawanie...
Gdy próbuje coś dodać:
sprawdzam czy to jest w bazie jeżeli jest nic nie robię
jeżeli nie ma - dodaje
Problem pojawia się wtedy gdy dwa wątki będą chciały dodać to samo, bo jeden nadpisze drugi i utracę część danych...
Mam nadzieje że wyjaśniłem w miarę sensownie mój problem i zdołacie koledzy mi pomóc
Dziękuję za odpowiedzi
Pozdrawiam
Kamil