Ich habe hier 2 Threads und will jeweils eine statische Variable von 0 nach 99 inkrementieren.
Nun meine Frage: Ist dies mit dem Schlüsselwort "synchronized" auch dann threadsafe, wenn die zu inkrementierende Variable statisch ist? Oder kann es passieren, dass der zweite Thread irgendwann auf die bereits durch den ersten Thread inkrementierte Variable zugreifen könnte?
Java:
import java.io.*;
public class Main implements Runnable
{
public static int count = 0;
public int getCount() {
return count;
}
public synchronized void increment(){
int zahl = getCount();
while(zahl<100){
System.out.println(zahl);
zahl++;
}
}
@Override
public void run() {
increment();
}
public static void main(String[] args)
{
Main m1 = new Main();
m1.run();
Main m2 = new Main();
m2.run();
}
}
Nun meine Frage: Ist dies mit dem Schlüsselwort "synchronized" auch dann threadsafe, wenn die zu inkrementierende Variable statisch ist? Oder kann es passieren, dass der zweite Thread irgendwann auf die bereits durch den ersten Thread inkrementierte Variable zugreifen könnte?