Toon posts:

[java] threads: hij doet maar een keer run

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een soort van chat programma. Hellaas heeft ie het een keer gedaan en nu nokt ie er heel raar mee.
ALs volgt: Ik heb een client en een server class. Het server gedeelte is goed hier wordt alles goed afgehandelt (trust me).
In de client maak ik een frame aan en een thread die steeds kijkt of er al iets geschreven is.

Java:
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()
    {
        while (true)
        {               
            try
            {
                
                ta.setText(ta.getText()+br.readLine()+"\n");
            }
            catch (IOException e1)
            {
                System.out.println(e1);
            }
            
            }           
    
    }


public static void main(String[] args)
  { 
    Client frame = new Client();
    frame.setTitle("chatbox");
            frame.setSize(600, 400);
        frame.setVisible(true);     
        
    Thread t=new Thread(frame);
    t.start(); 
    }


Alleen als ik debug, dmv een print functie in de while(true) lus te zetten doet hij dat maar een keer (ipv van oneindig ;) ). De run methode wordt dus ergens beeindigt maar hoe, waarom en waar?

  • Reefer
  • Registratie: Mei 2000
  • Laatst online: 21-02-2025

Reefer

madness

zoals het hier staat zou het moeten werken..ik denk dat het ergens anders mis gaat :?

A Breakbeat A Day Keeps Religion Away.


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Is het niet zo dat als je de main afsluit dat hij die thread automatisch weer killed?

It’s nice to be important but it’s more important to be nice


Verwijderd

Is het niet zo dat als je de main afsluit dat hij die thread automatisch weer killed?
volgens mij ook . .omdat de main de parent/owner van de thread is

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Als je na de t.start() een t.join() statement neerzet zal de main routine pas eindigen als de thread is afgesloten. Wellicht dat dit een oplossing is.

[ Voor 0% gewijzigd door pjonk op 20-10-2002 17:30 . Reden: typo's ]

It’s nice to be important but it’s more important to be nice


Verwijderd

Moet je niet ook de tijd aangeven waarna de timer weer opnieuw moet beginnen??

Ik heb zelf ook een Java-prog waar een timer inzit en die is:

timer = new Timer(10, this);
timer.start();


Hierin wordt ook aangegeven na welke tijd de timer opnieuw moet starten...

  • VinnieM
  • Registratie: September 1999
  • Laatst online: 29-11-2024
code:
1
ta.setText(ta.getText()+br.readLine()+"\n");

Ik neem aan dat 'br' een instantie is van een BufferedReader die is geinitialiseerd met de inputstream van de client? De methode 'readLine()' van BufferedReader blocked, dus wacht net zo lang tot dat er iets van de server komt. Als er wat komt moet hij natuurlijk wel weer verder gaan, vreemd dus...

Heb je de server ook wel zo gemaakt dat er steeds een Thread wordt afgesplitst bij elke connectie?

  • reskobon
  • Registratie: November 2001
  • Laatst online: 28-08 13:24
Verwijderd schreef op 20 oktober 2002 @ 18:12:
Moet je niet ook de tijd aangeven waarna de timer weer opnieuw moet beginnen??

Ik heb zelf ook een Java-prog waar een timer inzit en die is:

timer = new Timer(10, this);
timer.start();


Hierin wordt ook aangegeven na welke tijd de timer opnieuw moet starten...
Nee dat hoeft niet hoor.
Is het niet zo dat als je de main afsluit dat hij die thread automatisch weer killed?
Jups klopt! Wat je kan proberen is die thread te starten vanuit een andere klasse dat doe ik ook altijd en werkt prima.

Leeg


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 17-08 22:44
Volgens mij killed een main class niet zomaar threads die hij gestart heeft.
http://java.sun.com/j2se/...d.html#setDaemon(boolean)

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 17-08 22:44
Het staat zelfs in de language spec!!! Tering hee, check je bronnen de volgende keer!!
12.8 Program Exit
A program terminates all its activity and exits when one of two things happens:

* All the threads that are not daemon threads terminate.
* Some thread invokes the exit method of class Runtime or class System and the exit operation is not forbidden by the security manager.
http://java.sun.com/docs/.../execution.doc.html#44411
Pagina: 1