Wpis z mikrobloga

  • 2
@wkoloprzegrywy google-> Java list safe for concurrency. Albo sam sobie poczytaj co ma np concurrency framework/collection framework i czy coś się podpasowuje. Albo użyj jakąkolwiek strukturę danych i sam ją synchronizuj w wygodny ci sposób.
  • Odpowiedz
@wkoloprzegrywy: Sposobów jest kilka, wszystko zależy od tego jak wygląda twój kod (Thread.join(), CountDownLatch, ExecutorService.submit) lub coś w tym stylu:

List list = new CopyOnWriteArrayList<>();
ExecutorService ex = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10; i++) {
ex.execute(new
  • Odpowiedz
@wkoloprzegrywy: W takich momentach cieszę się że moje #php jest (no prawie całe) jednowątkowe, więc takie problemy tam nigdy nie powstaną.

I ja wiem, że to powyżej to pewnie jakieś denne zadanie na uczelnie, żeby właśnie student zapoznał się z strukturami danych "thread-safe" i pracą z nimi. Pewnie jakieś mutexy, semafory, a koniec końców jak potem próbujesz coś poważniejszego zrobić w ten sposób o pomyłkę nie trudno, pojawiają się
  • Odpowiedz
@Ununoctium: Dziekuje za obszerne wyjasnienia. Na pewno przydadza sie kiedys jak bedzie wieksza rozkmina jakiej technologii uzyc. Teraz ucze sie do OCP i rozkminiam wielowatkowosc, wiec raczej nie moge dac odpowiedzi nie bedacej na arkuszu "use golang" ( ͡° ͜ʖ ͡°)
@leoha: przygotowuje sie do OCP wiec te wszystkie metody musze przerobic, zastanawialem sie, czy to co chce osiagnac jest mozliwe ze zwykla arraylista i synchronized.
@63274682374:
  • Odpowiedz
@wkoloprzegrywy: Mylisz się, źródłem problemu jest twój kod. To czy odpalisz go w ramach testu czy jako zwykłą aplikację może jedynie zmienić prawdopodobieństwo wystąpienia błędu, ale w tym kodzie błąd wystąpić może zawsze.

Problemem jest to, że dodajesz do zwykłej ArrayList elementy z wielu wątków. Z uwagi na to, że w wątku dodajesz mało elementów, a wątki tworzysz sam (co jest operacją czasochłonną) to błędy nie pojawiają się cały czas.
  • Odpowiedz
astanawialem sie, czy to co chce osiagnac jest mozliwe ze zwykla arraylista i synchronized.


@wkoloprzegrywy: tak, mozesz owrapowac, tylko po co skoro to samo robi Collections.synchronizedList
  • Odpowiedz