Threads Variablen in einem Thread Aktualisieren

cybren

Mitglied
Ich habe einen Threadin diesem Thread rufe ich eine Methode auf Code:
Java:
public boolean isShooting=false;
run(){
methode();
try(){
Thread.sleep(2000);
catch(Exception e){}
}
die Methode:
Java:
public void methode(){
if(isShooting){
System.out.println("Hallo");
}
}
Das Problem ist nur das ich die Methode ganz am Anfang des Programms starte und da die Varible noch false ist und er die Variable anscheinend nicht Aktualisiert da die Varible während des gesammten Programms false ist obwohl sie außerhalb des Threads schon true ist!
Wie kann ich denn jetzt die varible im Thread Aktualisieren? ich meine ich rufe die Methode an sich ja alle 2 sec auf... aber er holt sich offensichtlich die Varible nicht nochmal. Und ich setzte die variable zwischendrinne auf true allerdings möchte hier nicht mein halbes Programm reinschreiben da das eine Menge Text wäre!
 

SilverClaw

Aktives Mitglied
Wäre trotzdem sinnvoll, wenigstens den Anfang deiner run() -Methode zu kennen.

boolean wahrheit = true;

run() {

while(wahrheit) {
//machwas
}
}

sollte abbrechen, sobald die Schleife durch ist und wahrheit auf false gesetzt wurde. Wenn es das nicht tut, hast du irgendwo einen Denkfehler drin und ohne mehr Code kann man da schlecht durchraten. :bahnhof:
 

cybren

Mitglied
Folgendes, ich setzte die varible zwischendrinne auf true bzw wieder auf false und er geht die schleife halt nieeee durch da er mir niemals Hallo ausgibt obwohl die Varible true IST. also weiterhin dei Frage wie mache ich es, dass die Varible bei jedem durchgang Aktualisiert und dann halt die Schleife durchgeht. außerdem mache ich das auf true bzw. auf false setzten in einer anderen methode. außerdem benutze ich eine if schleife und keine while da es was das abbrechen und Aktualisieren angeht nichts verändert und ich nicht möchte das die schleife sonlange durchläuft wie die Varible true ist!
 

Joose

Top Contributor
außerdem benutze ich eine if schleife und keine while

if-Schleife

Folgendes, ich setzte die varible zwischendrinne auf true bzw wieder auf false und er geht die schleife halt nieeee durch da er mir niemals Hallo ausgibt obwohl die Varible true IST

Wenn ich mir den Code oben anschaue dann:
Wird die run-Methode angestoßen, diese ruft
Code:
methode()
auf. Da
Code:
isShooting
aber hier noch false ist, wird keine Ausgabe getätigt. Danach legt sich der Thread noch 2 Sekunden schlafen und ist danach fertig und wird beendet.

Also keine Ahnung wo du angeblich deine Variable auf "true" setzt bzw. wo du jetzt eine Schleife hast, aber nicht in diesem Code.
 

cybren

Mitglied
OK ähm entschuldige bitte ich habe etwas vergessen zu schreiben:
Java:
public void run() {
		while(true){
		methode();
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
		}
}
}
tut mir unheimlich leid! :oops: mit der while schleife ruft er es ja die ganze zeit auf und legt es danach wieder schlafen und fägt von vorne an... aber die varible wird nciht aktualisiert
 

Joose

Top Contributor
Ok die while-Schleife ist ja schon mal ein wichtiges Detail, leider reicht der Code aber noch nicht aus um dein Problem zu lösen.

Wo instanzierst du deinen Thread? Wo änderst du von diesem Objekt dann die Variable
Code:
isShooting
?
 

leon_20v

Aktives Mitglied
isShoting sollte volatile sein.

Desweiteren würde ich das setzen und den zugrif auf isShoting synchronisieren...

Java:
boolean volatile isShoting = false;
Object synchobject = new Object()

// iwo
synchronized(synchobject){
isShoting = true;
}

// im thread
synchronized(synchobject){
if(isShoting) {
// bliblabblub tu was du willst

isShoting = false; //(sonst endlos)
}
 

cybren

Mitglied
Hey ich bin sicher, dass deine Lösung funktionierende würde aber wenn ich
Java:
boolean volatile isShooring= false;
schreibe sagt er das ich das volatile wegmachen soll... BTW. Was heißt volatile? Und wie funktioniert das?
@siverclaw ... Na klar starte ich das ! Ganz doof bin ich ja nicht...
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Mit volatile gekennzeichnete Variablen werden in Java nicht zwischengespeichert , somit kannst du garantieren das alle Threads die darauf zugreifen den richtigen wert auslesen.Dies ersetzt aber keine Synchronisation !
 

leon_20v

Aktives Mitglied
Hey ich bin sicher, dass deine Lösung funktionierende würde aber wenn ich
Java:
boolean volatile isShooring= false;
schreibe sagt er das ich das volatile wegmachen soll... BTW. Was heißt volatile? Und wie funktioniert das?
@siverclaw ... Na klar starte ich das ! Ganz doof bin ich ja nicht...


Bist schon weiter gekommen?

Es tut mir leid ich hab mich in der Syntax vertan, es heißt auch einfach:
Java:
private volatile boolean isShoting = false;

Aber das hast du bestimmt schon dank der Tante-Suchmaschine rausgefunden ;)
 

cybren

Mitglied
Danke das mir Volatil nimmt er jetzt an aber die Variblen im Thread "Aktualiseren" sich immer noch nicht...

sogar wenn er nur einen Thread starten soll wenn der boolean true wieder gibt, ist der isShooting immernoch flase ;( Ich habe in 4 Büchern und in Google nicht hilfreiches gefunden :rtfm: und kann überhaupt nicht nachvolziehen, dass er die Variable nicht richtig übernimmt...

er müsste sie ja eigendlich aus der Klasse abfragen und nicht irgendwo im Thread und in der Klasse ist sie true!

Java:
if(isShooting){
 Thread t = new Thread (new Runnable());
		t.start();
		System.out.println("isShooting ist: "+isShooting);
	}
er gibt true aus:
im Thread:
Java:
public void run(){
system.out.println("im Thread is isShooting aber: "+isShooting);
if(isShooting){
//mach irgendwas
}
}
er gibt false aus:eek:???:L
ich hofffe mir kann wer helfen....
 

DrZoidberg

Top Contributor
Ändere deinen Code so ab:
Java:
...
System.out.println("isShooting ist: "+isShooting + ", Zeit = " + System.nanoTime());
...
isShooting = true;
System.out.println("Setze isShooting auf true. Zeit = " + System.nanoTime());
...
System.out.println("im Thread is isShooting aber: " + isShooting + ", Zeit = " + System.nanoTime());

Und dann vergleich mal zu welchen Zeitpunkten die einzelnen Aktionen stattfinden.
 

cybren

Mitglied
Gute Idee er gibt das hier Aus:

Setzte isShooting auf true bei 925360563739
isShooting ist: true zeit = 925360837051
isShooting ist im Thread aber: false zeit= 925361917465
 
Zuletzt bearbeitet:

DrZoidberg

Top Contributor
Poste mal ein komplettes Programm, das man auch ausführen kann.
Der Code hier funktioniert jedenfalls einwandfrei.
Java:
public class Test {
  private static volatile boolean isShooting = false;

  public static void main(String[] args) {
    new Thread() {
      public void run() {
        while(true) {
          System.out.println("im Thread ist isShooting: "+isShooting);
          try {
            Thread.sleep(2000);
          } catch (InterruptedException e) {
          }
        }
      }
    }.start();
    System.out.println("isShooting ist: "+isShooting);
    try {
      Thread.sleep(100);
    } catch (InterruptedException e) {
    }
    isShooting = true;
    System.out.println("isShooting ist: "+isShooting);
  }
}
 
Zuletzt bearbeitet:

cybren

Mitglied
Es tut mir leid aber das program besteht aus 10 Klassen ... Wenn ich hier wirklich alles poste ist das einbüßten viel... Auserdem sind da auch ein paar viele Bilder damit das auch so aussieht ... Ich könnte dir höchstens den thread posten und die Variablen auch wenn es halt wie gesagt ein großes Programm ist
:bahnhof:

Außerdem ist mein isShooting nicht static
 
Zuletzt bearbeitet:

cybren

Mitglied
OK hat sich alles erlidgt war ein Dummer fehler von mir aber als ich den Thread dann so geschrieben habe wie du hat alles gefunzt :applaus::applaus::applaus::applaus: vielen dank füür deinen Post bekommt aufjedenfall ein danke! :toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Erste Schritte Variablen in abhängigkeit von Git branch Allgemeine Java-Themen 7
Fabiator Variablen Variablen Zählen Allgemeine Java-Themen 3
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
berserkerdq2 Labels in IJVM sind keine lokalen Variablen oder? Allgemeine Java-Themen 2
O Fehler bei Variablen Allgemeine Java-Themen 2
N File Path mit Variablen angeben Allgemeine Java-Themen 1
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
R Geometry erstellen die abhängig von Variablen ist Allgemeine Java-Themen 6
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
P static Blocks und variablen Allgemeine Java-Themen 41
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
V Datentypen Graphikrechner 2/Strings und Variablen in Doubles umwandeln Allgemeine Java-Themen 6
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
D BlueJ, Variablen die mehrfach vorkommen gleichzeitig umbenennen Allgemeine Java-Themen 3
C Variablen Variablen mit unendlichem Wert Allgemeine Java-Themen 22
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
T Maximale Felder maximale Variablen Allgemeine Java-Themen 2
W Lebendige Variablen herauslesen Allgemeine Java-Themen 1
K Summierung einer Variablen Allgemeine Java-Themen 5
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
Messoras Klassen Sämtliche Variablen einer Klasse übernehmen Allgemeine Java-Themen 6
K Static Variablen verbieten Allgemeine Java-Themen 10
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
A Best Practice Variablen vertauschen - Performance Allgemeine Java-Themen 1
F Variablen Variablen schachteln Allgemeine Java-Themen 6
7 6 int variablen vergleichen Allgemeine Java-Themen 34
M Variablen Variablen in Text einbinden Allgemeine Java-Themen 5
K Überschreiben von Variablen bei rekursivem Funktionsaufruf Allgemeine Java-Themen 2
R Übergreifende Variablen? Allgemeine Java-Themen 10
OnDemand Input/Output Variablen in Datei Speichern um sie wieder auszulesen Allgemeine Java-Themen 4
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
iB0T "goto" Befehl aus Batch in Java und Variablen wert immer wieder neu setzen Allgemeine Java-Themen 4
D ClassLoader für Variablen einer Klasse setzen Allgemeine Java-Themen 24
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
D Alle Variablen final setzen ? Allgemeine Java-Themen 26
C Kapselung Warum graift man auf Variablen nur über Methoden und nich direkt zu? Allgemeine Java-Themen 10
C Classloading und statische Variablen Allgemeine Java-Themen 2
K Variablen speichern Allgemeine Java-Themen 2
S Variablen bei Aufruf zurücksetzen Allgemeine Java-Themen 4
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
V Gibt es einen Variablen Cast? Allgemeine Java-Themen 8
K Mehrere JVMs die auf eine Klasse mit statischen Variablen zugreift Allgemeine Java-Themen 19
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
M Generische Methoden mit Java und globale Variablen Allgemeine Java-Themen 9
J Statische Variablen, Threadübergreifend. Allgemeine Java-Themen 4
E Variablen anderer Klassen auslesen (nur Name bekannt) Allgemeine Java-Themen 4
P Variablen in einer anderen Klasse auf Änderungen überwachen Allgemeine Java-Themen 12
V Typargument einer Variablen erfragen Allgemeine Java-Themen 4
B Rechnen mit mehreren Variablen Allgemeine Java-Themen 2
G Thread variablen Sichtbarkeit Allgemeine Java-Themen 15
J Java Pfad nicht mehr in Path Variablen??? Allgemeine Java-Themen 2
T Mit JNI finale Variablen überschreiben Allgemeine Java-Themen 14
T JNI -> auf Java-Variablen etc zugreifen Allgemeine Java-Themen 6
M Bezeichnung für Component-Variablen Allgemeine Java-Themen 6
M Variablen an Java-Programm übergeben Allgemeine Java-Themen 3
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
A Überschreibung von Variablen Allgemeine Java-Themen 3
A JavaCC: Variablen zaehlen Allgemeine Java-Themen 12
B globale und lokale Variablen Allgemeine Java-Themen 17
G referenz von variablen Allgemeine Java-Themen 9
O getRuntime().Exec() - Environment - Variablen setzen? Allgemeine Java-Themen 2
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
M Variablen Speicher wieder freigeben ? Allgemeine Java-Themen 9
N Variablen eines Objektes (instanz) in einen Array lesen Allgemeine Java-Themen 7
S In Subklasse auf private Variablen zugreifen Allgemeine Java-Themen 4
S Variablen und ihre Tücken. Allgemeine Java-Themen 7
C Binärbereich einer Variablen abfragen Allgemeine Java-Themen 8
J Zugriff auf den Namen einer Variablen Allgemeine Java-Themen 7
J Überschreiben von Variablen Allgemeine Java-Themen 3
C dynamische variablen Namen! Allgemeine Java-Themen 4
M Int und String Variablen verändern Allgemeine Java-Themen 10
H zwei Date Variablen überschreiben sich Allgemeine Java-Themen 2
G Taushen der Input variablen einer method Allgemeine Java-Themen 14
P Objekt- Variablen Allgemeine Java-Themen 16
K Environment Variablen per java -D weitergeben Allgemeine Java-Themen 9
D in class-Dateien nach variablen suchen! Allgemeine Java-Themen 5
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7
T Größe eine Variablen in Bytes? Allgemeine Java-Themen 22
B Reguläre ausdrücke mit variablen? Allgemeine Java-Themen 12
MQue JButton an verschiedenen Variablen Allgemeine Java-Themen 2
T Unabhängigkeit von Variablen/ Objekten. Allgemeine Java-Themen 6
G Frage zu statischen Variablen bei Vererbung Allgemeine Java-Themen 15
L Sichtbarkeit von Variablen / getMethode Allgemeine Java-Themen 4
H Variablen (A1, A2, A3 mit A_irgendetwas aufrufen) ohne Array Allgemeine Java-Themen 5
M Variablen in einer .doc Vorlage ersetzen Allgemeine Java-Themen 4
A Reflection - Variablen innerhalb einer Methode ermitteln Allgemeine Java-Themen 9
E Zugriff auf Variablen äusserer Klassen Allgemeine Java-Themen 2
M Variablen in Klasse verpacken? Allgemeine Java-Themen 10
F Allegemeiner Datentyp für Objekte und Primitive Variablen Allgemeine Java-Themen 6
W Array mit Variablen aus Vararg füllen Allgemeine Java-Themen 4
S Problem mit Boolean Variablen Allgemeine Java-Themen 8
A [SOLVED] Classpath und statische Variablen Allgemeine Java-Themen 6
J variablen wert ändernung mit einer art actionlistener? Allgemeine Java-Themen 4
C klassenübergreifende variablen Allgemeine Java-Themen 3
J 28 Variablen vergleichen und die höchsten addieren Allgemeine Java-Themen 15
T ungewollter Zugriff auf private Variablen? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben