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-Key: 305085

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

Printed on: April 20, 2024 at 14:04 o'clock

Mitglied: 86263
86263 May 22, 2016 at 10:18:23 (UTC)
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
Member: Saschaaaaa
Saschaaaaa May 22, 2016 at 13:36:53 (UTC)
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?
Mitglied: 86263
86263 May 22, 2016 at 13:55:47 (UTC)
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.
Member: Saschaaaaa
Saschaaaaa May 22, 2016 at 14:55:30 (UTC)
Goto Top
Geändert soll er ja in dem neuen Thread werden. Das ist genau das was nicht funktioniert )-:
Mitglied: 86263
86263 May 23, 2016 at 21:27:10 (UTC)
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?