Warum wird der Wert der Variablen "counter" nicht erhöht?

IZZO

Mitglied
Es soll anfangs ein neuer Thread erzeugt werden(gibt einen Countdown in einem Textfield aus). Um den Countdown zu resetten hatte ich die Idee, dass der ursprüngliche Thread nachdem er mindestens EINMAL ausgeführt worden ist (deshalb "counter") "getötet" wird und eine neuer Thread erstellt wird. Wenn ihc mir jetzt die Variable counter ausgeben lasse, dann ist sie aber immer 1. Warum? Oder habt ihr andere Lösungsvorschläge zu meinem Prob? Wäre echt dankbar!

Folgendes BSP:

Java:
 public void actionPerformed(ActionEvent e) { 
	        if(e.getSource() == ourredbuff){ 
	        	
	        	Thread cd1 = new Thread() {
	        		public void run() { new Countdown(orb,5,0);}
	        	};
	        	int counter = 0;
	        	
	        	 if(counter == 1){
		            	
	            		cd1.interrupt();
	            	
	            }
	        	
		            
		            cd1.start();
		            counter++;
		            System.out.println(counter);
		            
	        }
}
 

sheel

I love Asm
Und ein drittes(?) Mal:
Ordentlicher Umgang mit Threads ist nicht nur eine Schönheitssache, sondern Pflicht.
Du verwendest
a) deprecated Zeug
b) keine generelle Synchronisation für irgendwas im Zusammenhang mit dem Thread
c) keine Sync-Maßnahmen für den Swing/AWT-EDT.

Da das ein größeres Thema ist, welches man nicht in ein paar Zeilen beschreiben kann:
Bitte Google benutzen und zB. entsprechende Kapitel in der Javainsel lesen.
 

benhaze

Mitglied Platinum
Tja...warum ist wohl die Variable counter immer 1?

Java:
int counter = 0;
if(counter == 1){
   cd1.interrupt();
}
cd1.start();
counter++;

schau dir mal folgende Zeile an:
Java:
int counter = 0;
bei jedem ActionPerformed() wird eine neue Variable counter mit 0 initialisiert.
Diese neue Variable erhöhst du um 1 (counter++)
 

Neue Beiträge