Toon posts:

[JAVA] timer zonder cpu 98%

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb momenteel een programma geschreven in java dat om de minuut een jpanel repaint. Probleem is nu dat dit een ongelooflijk cpuverbruik van 98% tot gevolg heeft. Dit komt door het checken van de klok. Iemand een concreet idee hoe ik dit kan verhelpen?

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
while(c<1)
    { 
      GregorianCalendar inauguration = new GregorianCalendar (); 
      SimpleDateFormat sdf = new SimpleDateFormat ("yyyy/MM/dd hh:mm"); 
      sdf.setCalendar( inauguration ); 
      String dateString = sdf.format(inauguration.getTime()); 
      //System.out.println(dateString);
      if(dateString.equals(minutes))
      {}
      else
      {
        BufferedReader innumber = new BufferedReader(new FileReader("number1.xml"));
        meters=Integer.parseInt(innumber.readLine());
        if(meters!=vorige)
        {
          jpanel.repaint(); 
          System.out.println("repainted");
        }
        vorige=meters;
      }
      minutes=dateString;
    }


.modbreak: code tags toegevoegd, denk daar voortaan zelf aan

[ Voor 78% gewijzigd door .oisyn op 12-01-2004 22:01 ]


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 24-05 20:08
Ik denk dat je hier even naar kan kijken:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Timer.html
of hier naar:
http://java.sun.com/j2se/...pi/javax/swing/Timer.html

[ Voor 28% gewijzigd door Dash2in1 op 12-01-2004 21:19 ]


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

En naar de code tags ;)

Java:
1
2
3
while(leesbareCode == true) {
        myPost.useCodeTag();
}

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 27-05 21:44

Robtimus

me Robtimus no like you

Of kijk eens naar Thread.sleep(int). Want nu is ie idd continue bezig, zonder idle time.

Maar ik zou ook voor een timer gaan, heb ik zelf ook gedaan.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
ok, bedankt allemaal, het werkt nu...
ontroerend zo'n snelle antwoorden _/-\o_ :'(

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 27-05 21:44

Robtimus

me Robtimus no like you

Just curious: welke oplossing heb je gekozen? java.util.Timer? javax.swing.Timer? Of Thread.sleep(int)?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
ik heb voor de util.Timer gekozen, maar nu zit ik opeens terug met hetzelfde probleem...

Nog eens kort uitleggen: ik wil eigenlijk een lijngrafiek die van rechts naar links opschuift. Nu zit ik met het probleem dat ik met

new Timer(2, updateCursorAction).start();

werk, maar dit heeft als gevolg dat mijn processor nog steeds 98% haalt, aangezien ik eigenlijk constant de image ververs.
Iemand nog een idee hoe ik dit kan oplossen?

  • nxt
  • Registratie: November 2001
  • Laatst online: 04-02 09:36

nxt

ik heb voor de util.Timer gekozen, maar nu zit ik opeens terug met hetzelfde probleem...
javax.swing.Timer neem ik aan als ik kijk naar de constructor die je gebruikt ;)

maar je kunt een groter getal nemen voor de delay
is het echt nodig dat je elke 2 millisecondes de grafiek update??
als je bijvoorbeeld 500 neemt, dan update ie elke halve seconde

[ Voor 6% gewijzigd door nxt op 15-01-2004 18:38 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 27-05 21:44

Robtimus

me Robtimus no like you

Niet constant verversen.

Ik had ook een panel dat in de paintComponent method het label wat erin stond resizede zodat het vullend zou zijn. In die paintComponent scalede ik dus het font, met als resultaat dat de paintComponent weer werd aangeroepen. Dat soort dingen vreet processortijd ja. Jouw continue verschuiven idem. Je zou dus getimed (dus niet continue) je image moeten verversen. Dan maar niet vloeiend.

More than meets the eye
There is no I in TEAM... but there is ME
system specs

Pagina: 1