[Java] Timer *

Pagina: 1
Acties:

  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
In Visual Basic heb je een Timer Object.

Nu zou ik deze ook graag in Java krijgen. Het probleem is dat ik wel de library java.util.Timer ken, maar deze werkt met threads, en ik zou het lieft gewoon een functie timer aanroepen die naar x seconden een methode start.

Is dit mogelijk?

  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

kijk eens naar deze
http://java.sun.com/j2se/1.3/docs/api/javax/swing/Timer.html
ik denk dat deze aardig doet wat je wilt.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 14-09 12:05

Tuinhark

Retro

Die Timer in VB is eik ook een soort Thread. Die implementeer je zelf (dwz, wat voor code hij periodiek hij moet uitvoeren).

Dan doe je dat toch ook in Java?

public class MyTimer extends java.lang.Thread

en

MyTimer timer = new MyTimer();
timer.start();

etc, etc..

Maw, zoek informatie over threading op en je zit goed.

:Y)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
compubink: en ik zou het lieft gewoon een functie timer aanroepen die naar x seconden een methode start.
Als ik je goed begrijp wil je als je de timer start ook de control-flow geblokkeerd hebben niet?

Dat kan je heel eenvoudig zelf implementeren met behulp van wat eenvoudige sleeps :) .

Kijk alleen uit dat je dit niet op de event-dispatch thread gaat doen (die wordt gebruikt als je events van GUIs afvangt) want dat zal niet gaan werken :o .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
Thnx, maar ik heb nog een probleem: Ik kan geen Swing componenten gebruiken aangezien de ontwikkel omgeving die ik gebruik maar jdk1.1.5 gebruikt.

Kan iemand mij even een simpel voorbeeld geven van hoe zo een thread te maken is.

Als ik het goed begrijp kan ik dus een thread aanmaken net zoals een klasse, en aan het eind van deze thread een functie aanroepen.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 14-09 12:05

Tuinhark

Retro


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan inderdaad gewoon zelf een klasse maken die of Thread extend of Runnable implementeerd en die kan je zelf laten doen wat je wilt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
Op vrijdag 01 februari 2002 00:33 schreef rwb het volgende:
Je kan inderdaad gewoon zelf een klasse maken die of Thread extend of Runnable implementeerd en die kan je zelf laten doen wat je wilt.
Ja, zoiets dacht ik ook.

Heb ff wat gekeken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Timer extends Thread {
   //initializations

   public void run() {
    do {
        //doiets
    } while (result=false);

    Try {
        Thread.sleep(5000);
    }
    Catch(SleepException e) {
        System.out.printLn("Sleep exception");
    }
   }
}

Dit is wel leuk, maar eigenlijk moeten er meer dingen gebeuren:

De GUI moet altijd beschikbaar zijn (de knoppen).
Er moet worden gewacht op input, die komt uit 1 class.
Er moet eigenlijk tegelijkertijd ook worden gewacht op de input van de andere class.

Het grootste probleem is dat de input tegelijkertijd kan komen, en dat er dan een andere actie uitgevoert moet worden.

Ik dacht dit op te lossen door 3 threads te maken. En dan eventueel met yield() te zorgen dat de andere thread processortijd krijgt.

  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
Wat ik hierboven heb kan niet, foutje, die Thread.sleep moet binnen de lus staan toch?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De thread blijft leven zolang hij in de run methode is, dus dat lijkt me idd wel handig :o .

Multi-threading is geen eenvoudige stuff. Je moet goed weten waarmee je bezig bent. Kijk eens in de Java Tutorial, maar nog beter kan je een goed boek over multi-threading kopen :) .

http://java.sun.com/docs/books/tutorial/essential/threads/index.html

Zeker als je met Swing gaat werken moet je heel goed weten wat je doet:

http://java.sun.com/docs/books/tutorial/uiswing/overview/threads.html

http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html
http://java.sun.com/products/jfc/tsc/articles/threads/threads2.html
http://java.sun.com/products/jfc/tsc/articles/threads/threads3.html

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
thnx, zal het eens allemaal gaan doorspitten.
Pagina: 1