SWING>>Wielowątkowość

0

Moje pytanie brzmi jak można w obiekcie JList bezpiecznie usuwać elementy z innego wątku aniżeli watek dystrybucji zdarzeń? Nie chciał bym korzystać z SwingWorker ponieważ w przypadku którym się akurat zajmuję był by to przerost formy nad treścią, interesuje mnie „krótsze” rozwiązanie.
Pozdrawiam

0

Nie musisz rozszerzać SwingWorker. Wystaczy zaimplementować Runnable.

0

To co musisz zrobić to spowodować wystąpienie zdarzenia, którego obsługa w Event Dispatching Thread będzie polegała na usunięciu czegoś z listy (i odrysowaniu widoku). SwingWorker jest do tego stworzony. Nie trzeba implementować wszystkich metod, wystarczy dwie chyba. Można to zrobić jako klasę anonimową w treści metody nawet.

0

SwingWorker jest stworzony do zadań które trwają dosyć długo, tzn więcej niż np 100 ms i mogłoby powodować spore lagi w GUI, a w międzyczasie chciałyby uaktualniać GUI. Runnable wystarczy do pojedyńczych zadań, które są bardzo krótkie, najlepiej rzędu < 10 ms, taki lag nikomu nie będzie przeszkadzał o ile nie zaspamujemy EDT tymi Runnable, tak że większość czasu EDT będzie wykonywał nasze zadania.

autor:
Jeśli chcesz usuwać z JListy, to może dobierz się bezpośrednio do jej modelu? Nawet jak zrobisz synchronizację na metodach w tym modelu to nie powinno być zakleszczeń.

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