avalanche123 Skrevet 3. mars 2009 Del Skrevet 3. mars 2009 Er det noen forskjell på disse codene imåten dem oppfører seg? Hvilken ville du brukt - og hvorfor isåfall? Takker for relevante svar! Code1: public void run() { while (true) { try { if (!paused) { EventQueue.invokeAndWait(new Runnable() { public void run() { try { for (int i = 0; i < game.stepDelay; i++) { sleep(10); game.getGUI().repaint(); } moveRandomly(); } catch (InterruptedException e) { System.err.println("run() error"); } } }); } else { sleep(10); game.getGUI().repaint(); } } catch (InterruptedException e) { e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Code2 (se bortifra "//"'ene...) // public void run(){ // while(true){ // try { // if(!paused) // { // /** update itself after each player move // * no point in updating the gui every 10 ms, if the players // * are moving every second*/ // for(int i=0;i<game.stepDelay;i++) // { // /** The reason for sleeping is giving the threads other time to react*/ // sleep(10); // game.getGUI().repaint(); // } // moveRandomly(); // } // else{ // sleep(10); // game.getGUI().repaint(); // } // } catch (InterruptedException e) { // e.printStackTrace(); // } // } // } Lenke til kommentar
Patton Skrevet 3. mars 2009 Del Skrevet 3. mars 2009 Thread handling i Swing: http://java.sun.com/developer/JDCTechTips/2005/tt0419.html#1 Lenke til kommentar
tsoiland Skrevet 10. mars 2009 Del Skrevet 10. mars 2009 Forskjellen ser ut til å være om du skal kjøre deler av koden direkte, eller om du skal få "gui-tråden" til å gjøre det. Grunnen til å eventuelt kjøre noe i gui-tråden er at swing komponenter ikke er thread-safe. Så alle kall mot swing komponenter må skje fra gui-tråden. Du bør uansett ikke kjøre alt det der fra gui-tråden. Regner med det er en grunn til at du har det i en egen tråd. Spørsmålet er om repaint metoden må kalles fra gui-tråden for å unngå problemer. Fungerer begge? Blir GUIet tregt når du bruker den øverste? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå