Gast
#3171166
Hallo, ich habe zum Test ein einfaches Programm geschrieben in dem zwei
Threadklassen in der Main Klasse instanziert und gestartet werden.
Alle Threads haben meiner Meinung nach die gleiche Priorität
Ausgabe:
Thread A wird ausgefuehrt
Thread B.1
wird ausgefuehrt
Thread B.3
wird ausgefuehrt
Thread B.2
wird ausgefuehrt
main thread
Thread B.4
wird ausgefuehrt
Thread A wird ausgefuehrt
Thread B.2
wird ausgefuehrt
Thread B.3
wird ausgefuehrt
main thread again
...
Wieso wird nun Thread 3 vor Thread 2 abgearbeitet? Wann wird zum Main
thread "zurückgesprungen"?
Wenn man das Programm mehrmals ausführt ändert sich die
Abarbeitungsreihenfolge...
Code:
import java.lang.String;
import java.lang.Thread;
class Thread_A extends Thread
{
public void run()
{
while(true)
{
System.out.println("Thread A wird ausgefuehrt");
try{
sleep(1000);
}catch(Exception e) {};
}
}
}
class Thread_B extends Thread
{
static int count=1;
int Id;
Thread_B()
{
Id=count;
count++;
}
public void run()
{
for(int i=0;i<Id;i++)
{
System.out.println("Thread B." +Id);
System.out.println(" wird ausgefuehrt");
try{
sleep(1000);
}catch(Exception e) {};
}
}
}
class Thread_Test
{
public static void main(String[] args)
{
System.out.println(Thread.currentThread().getPriority());
Thread_A Anton1= new Thread_A();
Anton1.start();
for(int i=1;i<5;i++)
{
Thread_B Berta = new Thread_B();
Berta.start();
}
System.out.println("main thread");
try{
Thread.sleep(1000);
}catch(Exception e) {};
System.out.println("main thread again");
}
}