saschaaaaa
Goto Top

Java extra Thread

Hallo Community,

meine ersten Versuche mit Java bringen mich an gewisse Schwierigkeiten.

Ich habe diesen Code:
public class test
{
	Thread t;
	public static void main(String args){
		int eingabe;
		t = new MyThread();
		t.start();
		if(eingabe == 2){
			//mach
		}else{
			//mach
		}
	}
}
class MyThread extends Thread{
	public
	MyThread(){
	super();
	}
	public Integer run(java.awt.event.KeyEvent evt) {
		int eingabe = evt.getKeyCode();
		return eingabe;
	}
}

Das bringt mir diesen Fehler:
test.java:8: error: non-static variable t cannot be referenced from a static context
                t = new MyThread();
                ^
test.java:9: error: non-static variable t cannot be referenced from a static context
                t.start();
                ^
3 errors

Wie krieg ich das static <> non-static Problem hin?

Ich arbeite nicht in Eclipse, nur Notepad.

Danke schonmal für ein Paar Tipps

Grüße
Sascha

Content-ID: 305085

Url: https://administrator.de/contentid/305085

Ausgedruckt am: 17.11.2024 um 19:11 Uhr

86263
86263 22.05.2016 um 12:18:23 Uhr
Goto Top
Zwei Möglichkeiten:
Entweder die Deklaration der Variable t in die Main-Methode verlagern oder das Wort static vor die Deklaration der Variable t schreiben.

Gruß,
Marius
Saschaaaaa
Saschaaaaa 22.05.2016 um 15:36:53 Uhr
Goto Top
Okay Danke damit sind die Fehler schonmal weg.
Allerdings passt jetzt irgendwas wieder nicht:

import java.util.concurrent.TimeUnit;
public class test
{
	static Thread t;
	public static void main(String args){
		int eingabe = 88;
		t = new MyThread();
		t.start();
		try{
			TimeUnit.MILLISECONDS.sleep(3000);
		}catch(InterruptedException e){}
		if(eingabe == 2){
			System.out.print("if2");  
		}else{
			System.out.print(eingabe);
		}
	}
}
class MyThread extends Thread{
	public
	MyThread(){
	super();
	}
	public Integer run(java.awt.event.KeyEvent evt) {
		int eingabe = 11;
		eingabe = evt.getKeyCode();
		return eingabe;
	}
}

Hier ist der Output 88.
Wieso?
86263
86263 22.05.2016 um 15:55:47 Uhr
Goto Top
In Zeile 6 wird der Wert von eingabe auf 88 gesetzt. Danach wird er nie geändert. Anschließend wird der else-Zweig (Zeile 14) ausgeführt.
Saschaaaaa
Saschaaaaa 22.05.2016 um 16:55:30 Uhr
Goto Top
Geändert soll er ja in dem neuen Thread werden. Das ist genau das was nicht funktioniert )-:
86263
86263 23.05.2016 um 23:27:10 Uhr
Goto Top
Nee das kann so nicht funktionieren, da niemals dieselbe Variable verändert wird.
Dürfte ich denn mal erfahren, was der Hintergrund dieses Projektes ist?
Geht es darum etwas einzulesen oder geht es um die Beschäftigung mit Threads?