Java [1242]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • Anonim

    Potrzebuje małej pomocy. Musze napisać program ktory bedzie wielowątkowy. Bedzie posiadał przycisk start stop. I progress bar.
    Wszystko w bibliotece SWT. W momencie nacisniecia start ma byc wykonywane jakies obliczenie bez znaczenia jakie. A drugi watek ma wypelniac progress bara zgodnie postepem w obliczeniach. Nie moze to by zrobione w jednym watku. (progress zamrozi program).
    Jak ktos ma chec mi pomoc bede bardzo wdzieczny :)
  • Ja nie istnieje (FURBY)

    a nie mozesz zrobic tak ze masz jeden main watek z progresem i jak ktos klika przycisk start to uwalnia sie watek lcizacy a na main watku wlancza sie wiecznie biegajacy proges tak jak na starcie windowsa xp :) i po skonczeniu sie go wylacza :) taki pomysl
  • Anonim

    problem jest taki ze mam taki wymog odgorny ze musze wykorzystac 2 watek. Wydaje mi sie ze trzeba wykorzastac interfejs runnable. Musi byc to niestety aplikacja wielowatkowa
  • Ja nie istnieje (FURBY)

    toć ja mowilem o 2 watkach... :D a interfejs :D stary wiesz wogole jak odplic 2 watek ?
  • Anonim

    no wlasnie z tym mam problem hyhy siedzie nad thinking in java i ucze sie wspolbieżności. Wlasnie niewiem jak z tym sobie poradzic :)
  • Adept

    >Ja nie istnieje (FURBY) napisał

    >a na main watku wlancza sie wiecznie biegajacy

    sorry za OT ale ludzie!!!! bez przesady!!! WLANCZA?????? dbajcie chociaż w najmniejszym stopniu o ort!!


  • Anonim

    a spojrzales w ogole w google?
    "how to use threads java"
    pierwszy link
    http://java.sun.com/docs/books/tuto...

    have fun.
  • boska renia

    Generalnie bardzo uważaj na wielowątkowość we frameworkach GUI. W Swing/AWT wszelkie operacje na obiektach graficznych (np. zmiana postępu progres bara) muszą być wykonywane w głównym wątku procesu GUI! W tym sensie mówi się o AWT/Swingu że są jednowątkowe. Podobnie jest chyba i w SWT?

    Jesli chcesz wiedziec wiecej o synchronizacji w Swing/AWT przegoogluj dwa hasła: invokeLater(Runnable) invokeAndWait(Runnable). Nie radzę korzystać z wielowątkowości w Swingu JRE 5 - sporo błędów, poprawionych w wersji JRE 6.

    Przykladowo, aby zupdajtować progress bara z innego wątku należy wykonać coś a la (pisane z głowy, nie z Eclipsa):

    [jeden z wątków użytkownika]

    final int postep = 12;
    SwingUtilities.invokeAndWait( new Runnable(){
    public void run (){
    mojeOkno.getProgressBar1().set Progress(postep);
    }
    });

    Metoda invokeAndWait blokuje wywołanie, natomiast invokeLater nie blokuje. Oczywiście wywołanie jednej z tych metod w wątku GUI wyrzuca błąd.

    W ten sposób zapewniamy synchronizację z wątkiem GUI Swinga. Dla AWT metody te są w klasie AwtUtils (Swing de facto z nich korzysta).