[Java]rownoczesny zapis do pliku przez watki

0

mam kilka watkow, ktore zapisuja dane do wspolnego pliku. gdy uzywam obiektu FileOutputStream i strumienia PrintWriter to wychodzi kasza:/. czy istnieje jakis strumien ktory pozwoli na rownoczesny(czyt. kontrolowany) dostep do pliku, czy trzeba samemu o to zadbac?
pzdr.

0

proponuje stworzyc funkcje zsynchronizowana albo zsynchronizowac strumien ktory uzywasz

0

ludziska slyszeliscie wy kiedys o czyms takim jak monitor semafor etc... jak nie to radze poczytac gdzies. robi sie kaszana bo dane ida do strumienia z kilku watkow jednoczesnie i mieszaja sie ze soba. a powinno byc tak ze w jednym czasie tylko 1 watek ma dostep do strumienia i tu z pomoca przychodzi monitor albo lock (zaleznie od potrzeb i zastosowania)

Np w c# uzywa sie monitorow do obiektow i semaforow dla zmiennych.

Innymi slowy uzywaj flagi zajetosci strumienia (jakas zmienna) w momencie kiedy jest ustawiona na true to inne watki czekaja z zapisem az bedzie false.

Prostszego sposobu nie znam a na javie sie nie znam... ale jakies takie mechanizmy msuza istniec.

0
Igorz napisał(a)

Prostszego sposobu nie znam a na javie sie nie znam... ale jakies takie mechanizmy msuza istniec.

Jak wspomniał angus w Javie jest magiczne słówko synchronized oznaczające że dana metoda lub fragment może być wykonywany tylko przez jeden wątek jednocześnie.

public synchronized void zapiszDoPliku(String co)
{
...
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1