# Statische Variablen, Threadübergreifend.



## Java-Pelé (21. Apr 2011)

Hallo,

eigentlich dachte ich, ich würde Java so gut beherrschen wie Maradona den Fußball.

Ich habe eine Klasse C:

public class C {
  public static boolean test = false;
}

Die Funktionalität dieser Klasse soll bei Testfällen abgeknippst werden, also

C.test = true;

Tatsächlich ist der Wert aber false wenn die Klasse aus einem anderen Thrad heraus benutzt wird. Das finde ich nicht ugt. Gibt's denn sonst eine Möglichkeit, eine threadübergreifende Variable zu nutzen.


----------



## maki (21. Apr 2011)

Sowas wie [c]public static boolean[/c] ist immer ganz schlecht im OO Sinne.

Bevor wir hier mit Synchronisation (wie zB. volitale) anfangen, solltest du das ändern.


----------



## Java-Pelé (21. Apr 2011)

Was interessiert denn OO? Und wo ist das Problem hier? Ich denke, man kann aus dem Kontext herauslesen, dass diese Variable einmal (zum Programmstart) geschrieben wird und sonst nur noch gelesen. Synchronisationsprobleme: Null. Ein Problem war, dass ich die Variable im Hauptthread entsprechend gesetzt habe, und die danach erzeugten Threads nichts davon wissen wollten.

Ich habe mittlerweile eine kostengünstige Lösung (weder volatile noch synchronized).


----------



## maki (21. Apr 2011)

> Was interessiert denn OO? Und wo ist das Problem hier?


Aha... dachte einfach dass jemand der von Java, Testen etc. spricht Interesse an OO hat.



> Ich denke, man kann aus dem Kontext herauslesen, dass diese Variable einmal (zum Programmstart) geschrieben wird und sonst nur noch gelesen.


Nö, kann man nicht herauslesen, wo soll den dieser Kontext sein?
Die 3 Zeilen Code? 
Oder vielleciht dieser Abschnitt?


> ```
> C.test = true;
> ```
> Tatsächlich ist der Wert aber true wenn die Klasse aus einem anderen Thrad heraus benutzt wird. Das finde ich nicht ugt.


Da widersprichst du dir, oder warst du wirklich verwundert darüber dass der Wert einer Variablen true ist nachdem du ihn auf true gesetzt hattest?


> Synchronisationsprobleme: Null. Ein Problem war, dass ich die Variable im Hauptthread entsprechend gesetzt habe, und die danach erzeugten Threads nichts davon wissen wollten.


Witzig, merkst du eigentlich dass du dir da auch widersprichst?
Keine Sync. Probleme, die anderen Theads hatten nur den neuen Wert nicht sehen können... soso



> Ich habe mittlerweile eine kostengünstige Lösung (weder volatile noch synchronized).


Sehr geheimnisvoll deine Aussage.


----------



## SlaterB (21. Apr 2011)

> und die danach erzeugten Threads nichts davon wissen wollten.

könnte mit Pech exakt eines der denkbaren Synchronisationprobleme sein

----

was ist denn die Lösung? (ich selber habe das Thema bereits auf Erledigt gesetzt)


----------

