# Wie startet man ein Thread richtig?



## Kidao (25. Sep 2007)

Hallo! 

Habe eine einfache Frage auf die ich bis jetzt keine Antwort gefunden habe.
Und zwar würde ich gerne wissen, wie man unter J2ME ein Thread richtig startet.
Habe versucht ein einfaches Uhr-Programm zu schreiben, die Ausgabe kriege ich schon hin, nur leider bleibt die while-Schleife tot aber da die richtige Ausgabe auf dem Bildschirm erscheint, müsste der Thread theoretisch richtig starten.
Vll. liegt mein Fehler aber auch in der falschen Methode zum Text ausgeben... "System.out.println()" gibts ja hier leider nicht mehr(was sehr ärgerlich ist).

Naja, hier ist mein Test-Code:

```
public class Zeit extends MIDlet implements Runnable {
    
    private Form form;
    private Thread thread;
    
    public Zeit(){

		new Thread( this ).start();
}
    
    public void run(){
        while(true){
                    form = new Form("Zeit");
            
                    Calendar c = Calendar.getInstance();
                    c.setTime(new Date());
                    int h = c.get(Calendar.HOUR_OF_DAY);
                    int m = c.get(Calendar.MINUTE);
                    int s = c.get(Calendar.SECOND);     
                
                String a = (h<10? "0": "")+h+":"+(m<10? "0": "")+m+":"+(s<10?"0": "")+s;

                form.append(a);
                
                                 try{
					Thread.sleep(50);
                                 }
                                    catch( Exception e ){}
        }

        
    }
    
    /**/
    public void startApp() {
                Display display = Display.getDisplay(this);
		display.setCurrent(form);
    }
    
    public void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
    }
}
```

Hoffe, mir kann jemand helfen! 

MfG
Kidao


----------



## The_S (25. Sep 2007)

Ein Thread in J2ME ist genau das selbe wie ein Thread im JDK! Un System.out.print(ln) gibte es sehr wohl, du siehste es halt nur beim Testen am PC.

Du solltest nicht jedesmal ein neues Objekt von Form erzeugen. Sondern lieber mit deleteAll() leeren! Bzw. noch besser ein Item adden und dessen Text dann jedesmal überschreiben.


----------



## Kidao (25. Sep 2007)

Danke für die Antwort! 
Naja also ein Thread mag vll. in J2ME und in JDK genau das selbe sein aber mir ging es mehr um das Starten des Threads. In JDK mach ich das ja zB einfach in der Main() und diese gibt es hier nicht oder ist die startApp() mit der Main() gleichzusetzen?

Und wie gesagt, eine einmalige Ausgabe kriege ich zu sehen, doch diese verändert sich nicht und "while(true)" hat anscheinend gar keinen Einfluss, denn mit oder ohne Pause bleibt alles gleich.

Ist "Form" so eine Art "Panel"?


Wäre klasse, wenn jemand meinen Code korrigieren würde, ich sitze schon seit zwei Tagen da und kriege es nicht zum Laufen.  

Mit Canvas, einem Bsp, zwei Klassen habe ich es hinbekommen aber da gibt es ja auch die wunderbare repaint()-Methode und an der einfachsten Textausgabe versage ich. 


MfG
Kidao


----------



## The_S (25. Sep 2007)

Kidao hat gesagt.:
			
		

> Danke für die Antwort!



Bitte ...



			
				Kidao hat gesagt.:
			
		

> Naja also ein Thread mag vll. in J2ME und in JDK genau das selbe sein aber mir ging es mehr um das Starten des Threads. In JDK mach ich das ja zB einfach in der Main() und diese gibt es hier nicht oder ist die startApp() mit der Main() gleichzusetzen?



In J2SE machst du das wann du willst/du den Thread benötigst und in J2ME startet man einen Thread auch dann, wann man ihn benötigt! Es besteht niemals der Zwang einen Thread gleich zu Beginn zu starten! Und wenn du nicht weißt, welche Methode beim Starten aufgerufen wird, solltest du dir dringend nochmal ein Einsteigertutorial und/oder Buch ansehen!



			
				Kidao hat gesagt.:
			
		

> Ist "Form" so eine Art "Panel"?



Ich kann mich nur wiederholen: Sie dir nochmal die Grundlagen an, sonst wird das hier nichts! Und ja, Form kann man mit JPanel vergleichen.



			
				Kidao hat gesagt.:
			
		

> Wäre klasse, wenn jemand meinen Code korrigieren würde, ich sitze schon seit zwei Tagen da und kriege es nicht zum Laufen.



Wäre super, wenn jemand meine Arbeit machen könnte. Ich sitz hier schon seit über 3 Jahren aber irgendwie muss ich immernoch arbeiten ???:L .



			
				Kidao hat gesagt.:
			
		

> Mit Canvas, einem Bsp, zwei Klassen habe ich es hinbekommen aber da gibt es ja auch die wunderbare repaint()-Methode und an der einfachsten Textausgabe versage ich.



Textausgaben kannst du auch über Canvas realisieren!



			
				Kidao hat gesagt.:
			
		

> Und wie gesagt, eine einmalige Ausgabe kriege ich zu sehen, doch diese verändert sich nicht und "while(true)" hat anscheinend gar keinen Einfluss, denn mit oder ohne Pause bleibt alles gleich.



Du kannst dir auch einfach anschauen, was ich geschrieben habe. Das ist die Lösung. Was willst du mehr?


----------



## Kidao (15. Okt 2007)

Hab's hinbekommen, danke. War schon etwas her, als ich das letzte mal programmiert habe.


----------

