Hallo liebes Forum,
war schonmal vor langer zeit hier und ich hoffe nun dass ihr mir erneut helfen könnt.
Ich soll 2 Threads erstellen, der eine main thread erstellt nen message thread.
der message thread soll vordefinierte sätze mittels einer for schleife über die interne methode der main klasse auf die konsole printen und anschließend nach der ausgabe einige sekunden warten.
die main methode soll wie gesagt den message thread starten und nach einer gewissen zeit den thread beenden, selbst wenn er noch am laufen ist. zwischendurch sollen main thread und message thread statusmeldungen ausgeben.
bei mir klappt die synchronisation irgendwie nicht. was mich stutzig macht. wenn ich main starte dann gibt erstmal der message thread seine nachrichten aus und dann erst wird ausgegeben das was die main eigentlich zwischendurch ausgeben sollte..
und
die methode nextInt (1000,5000) generiert zufallszahlen 1000 <= x <= 5000.
wäre nett von euch wenn ihr mir helfen könntet das problem zu beheben so dass die threads normal laufen und normale parallele ausgaben tätigen
mfg
johnny
war schonmal vor langer zeit hier und ich hoffe nun dass ihr mir erneut helfen könnt.
Ich soll 2 Threads erstellen, der eine main thread erstellt nen message thread.
der message thread soll vordefinierte sätze mittels einer for schleife über die interne methode der main klasse auf die konsole printen und anschließend nach der ausgabe einige sekunden warten.
die main methode soll wie gesagt den message thread starten und nach einer gewissen zeit den thread beenden, selbst wenn er noch am laufen ist. zwischendurch sollen main thread und message thread statusmeldungen ausgeben.
bei mir klappt die synchronisation irgendwie nicht. was mich stutzig macht. wenn ich main starte dann gibt erstmal der message thread seine nachrichten aus und dann erst wird ausgegeben das was die main eigentlich zwischendurch ausgeben sollte..
Java:
main.java
public class Main extends Thread
{
private long maximal = 3000; // ms = 3 Sekunden
private String myname;
public Main () {
this.myname = "main: ";
this.start();
}
public void run()
{
threadMessage ("Starting MessageLoop thread");
MessageLoop m = new MessageLoop(this, 0);
m.start();
threadMessage ("MessageLoopStarted");
long start = System.currentTimeMillis();
do {
System.out.println ("main: warte auf thread...");
} while ( System.currentTimeMillis() - start <= maximal ) ;
if (m.isAlive()) {
m.interrupt();
threadMessage ("Thread stopped after "+maximal/1000+" seconds");
}
else {
threadMessage ("Thread endes its work..");
}
}
public void threadMessage (String message) {
System.out.println (message);
}
}
und
Java:
MessageLoop.java
public class MessageLoop extends Thread
{
// instance variables - replace the example below with your own
private String myname = "Thread-";
private ZahlenGenerator generate = new ZahlenGenerator();
private Main main;
private String[] messages = {
"Dies ist ein Test",
"Java pr0 !",
"I`m a Thread",
"Das ist ein Test 2",
"Und der Thread läuft immer noch",
"Unglaublich.. er ist noch am leben!",
"Bald kommt das Ende..",
"Angewandte Informatik ist cool..",
"Ich verstehe nur Bahnhof",
"Letzte Nachricht!",
};
public MessageLoop (Main main, int id) {
this.main = main;
this.myname += id;
}
public void run () {
for (int i = 0; i < messages.length; i++) {
main.threadMessage (myname+": message"+i+": "+messages[i]);
try {
sleep ( generate.nextInt ( 1000, 5000 ) ); // 1 - 5 sek
} catch (InterruptedException e) {
// Fehler
};
}
this.interrupt();
}
}
die methode nextInt (1000,5000) generiert zufallszahlen 1000 <= x <= 5000.
wäre nett von euch wenn ihr mir helfen könntet das problem zu beheben so dass die threads normal laufen und normale parallele ausgaben tätigen
mfg
johnny
Zuletzt bearbeitet: