U
UnWissender2012
Gast
Guten Tag,
ich summiere bei folgendem Code eine Variable hoch, dazu benutze ich zwei Threads.
Insgesamt müsste die Variable nach dem beide Threads fertig sind, auf 400000 stehen.
Das tut sie aber nicht.
Habe ich den Peterson Algorithmus nicht richtig angewendet?
ich summiere bei folgendem Code eine Variable hoch, dazu benutze ich zwei Threads.
Insgesamt müsste die Variable nach dem beide Threads fertig sind, auf 400000 stehen.
Das tut sie aber nicht.
Habe ich den Peterson Algorithmus nicht richtig angewendet?
Java:
public class Uebung_10_Peterson extends Thread
{
public static int count = 0;
public void run ()
{
sum_up ();
}
public static void increment ()
{
count ++;
}
public static void sum_up ()
{
for (int i = 0; i < 200000; i++)
{
increment ();
}
}
public static void main (String[] args) throws InterruptedException
{
boolean flag0 = false, flag1 = false;
int turn;
Thread t1 = new Uebung_10_Peterson ();
Thread t2 = new Uebung_10_Peterson ();
// Prozess 1
flag0 = true;
turn = 1;
while (flag1 && (turn == 1)) {} // Busy-waiting
t1.start ();
flag0 = false;
// Prozess 2
flag1 = true;
turn = 0;
while (flag0 && (turn == 0)) {} // Busy-waiting
t2.start();
flag1 = false;
t1.join();
t2.join();
System.out.println("Summe: " + count);
}
}