[Java] Run methode runt niet

Pagina: 1
Acties:

  • noot101
  • Registratie: Februari 2002
  • Laatst online: 10-01 13:54
Ik heb een java-aplet geschreven dat wacht op berichten van een serverapplicatie via een socketverbinding. Dit doe ik met het volgende stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public void run()
{
  try
  {
    while ( true )
    {
    statusLabel.setText(serverResponse());
    }
  }
  catch ( IOException e )
  {
    System.err.println( e );
    closeConnection();
  }
}

private String serverResponse() throws IOException
{
  String text = "";
  String input = in.readLine();
  if ( input == null )
   {
    throw new IOException( "Socket closed unexpectedly" );
   }
   else
   {
    text += input;
   }
  return text;
}

De Methode "serverresponse()" werkt, want deze gebruik ik ook als ik een connectie maak met de server. Deze geeft dan terug dat ik verbinding heb.
Ik ga er dus vanuit dat de fout ergens in de Run-methode zit. Maar waar???

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Ooit al eens aan debugging gedacht?

Waar zit de fout, dat kunnen wij ook zo op zich niet zien. Maar die run methode zorgt wel voor een oneindige lus.

https://fgheysels.github.io/


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op maandag 10 juni 2002 12:40 schreef whoami het volgende:


Waar zit de fout, dat kunnen wij ook zo op zich niet zien. Maar die run methode zorgt wel voor een oneindige lus.
Dat is meestal het idee van een thread ;)

Hoe roep je run aan? Zet eens system.out's in je while loop, etc.. debuggen dus :)

  • noot101
  • Registratie: Februari 2002
  • Laatst online: 10-01 13:54
Op maandag 10 juni 2002 12:44 schreef wasigh het volgende:
Hoe roep je run aan? Zet eens system.out's in je while loop
Het zit 'm wel in de aanroep van run, want als ik een system.out hierin zet laat ie niks zien.
Voor zover ik weet (en ik weet niet zo heel veel van Java) is het voldoende om Runnable in de volgende regel te zetten:

public class Democlient extends Applet implements ActionListener, Runnable {

Maar dit werkt dus niet. Hoe moet ik run dan aanroepen?

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

[naam van de thread].start() :)

staat in elke handleiding...

  • noot101
  • Registratie: Februari 2002
  • Laatst online: 10-01 13:54
Op maandag 10 juni 2002 12:59 schreef wasigh het volgende:
[naam van de thread].start() :)

staat in elke handleiding...
Is opzicht wel logisch, maar in de een voorbeeld dat ook met run werkt wordt dit toch ook niet gebruikt. Maar goed.
Waar moet ik dan run.start() in zetten? Ik heb 'm al in m'n init() gezet, maar dan krijg ik een foutmelding. Of moet ik daarvoor dan ook nog een methode start() aanmaken waarin in run.start() aanroep?

Verwijderd

Thread runner;


private void startThread() {
if (runner == null) {
runner = new Thread(this);
}
runner.start();
}

private void stopThread() {
runner = null;
}

en verander die while(ture) liever naar

Thread current = Thread.currentThread();

while (runner == current) {

ook hier info:
http://java.sun.com/docs/books/tutorial/essential/threads/

http://java.sun.com/products/jdk/1.2/docs/guide/misc/threadPrimitiveDeprecation.html

http://java.sun.com/products/jdk/1.2/docs/api/java/lang/Thread.html

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

je moet een instantie maken van democlient en hierop de methode start aanroepen. deze methode is al gedefinieerd en hoef je niet dus niet zelf aan te maken..
Pagina: 1