2016-06-30 6 views
0

Ich habe ein Problem mit Threads in Java. Das ist meine Klasse, die Thread implementiert:Setzen Sie eine Hauptfunktion Args innerhalb des Threads in Java

public class SensorAddClient extends Thread implements Runnable { 
String[] args = new String[3]; 
@Override 
public void run(){ 
try { 
    SensorClient.main(args);//this is the main function i wanna get executed on my args 
} catch (IOException e) { 
    e.printStackTrace(); 
} catch (JSONException e) { 
    e.printStackTrace(); 
}} 

dann verwende ich die nächsten 2 folgenden Zeilen zu nennen, wenn ich den Thread aktivieren müssen:

SensorAddClient cl = new SensorAddClient(); cl.start();

Ich habe einen Thread starten wessen Lauf nur eine bestimmte Klasse aufrufen muss, die mit den Argumenten ausgeführt wird, also rufe ich die Hauptfunktion der Klasse an, gibt es irgendeine Möglichkeit, die Hauptfunktion der Klasse, die ich aufrufe, mit den gewünschten Argumenten auszuführen? Also ho kann ich Elemente darauf setzen: String [] args = new String [3]; vor dem Ausführen des Laufs des Threads? Ist das möglich ? Jede mögliche Hilfe geschätzt, danke im voraus :)

+0

Nicht ganz sicher, ob ich verstehe Ihre Frage, was genau Sie mit und Ausgabe mit? Möchtest du Argumente an deine Runnable übergeben? – user1875195

+0

Versuchen Sie Ihren Einstiegspunkt ('public static main') in einem Thread auszuführen? – giannisf

+0

@ user1875195 Es tut mir leid, wenn es nicht gut erklärt. Was ich versuchte zu sagen ist, dass, wenn ich den Thread starte, ich will, dass es mir die Möglichkeit gibt, Werte auf diesem Stringarray einzufügen, ich rufe Args, so dass der SensorClient 's Hauptaufruf auf der Laufmethode die Argumente erhalte, die ich wähle. Aber ich möchte nicht system.in verwenden. –

Antwort

1

einen Konstruktor erstellen und die Werte dort hinzu:

public class SensorAddClient extends Thread implements Runnable { 
String[] args = new String[3]; 

public SensorAddClient(String[] args) { 

this.args = args; 

} 
@Override 
public void run(){ 
try { 
    SensorClient.main(args);//this is the main function i wanna get executed on my args 
} catch (IOException e) { 
    e.printStackTrace(); 
} catch (JSONException e) { 
    e.printStackTrace(); 
}} 
+0

Nun ja, aber es ist ein bisschen komplizierter coz die Argumente, die ich will, sind Variablen in dieser dritten Klasse gespeichert, wo ich den Thread starten. Ich weiß nicht, dass ich es richtig erklären –

+0

@pass die Argumente im Konstrukt, änderte ich die Antwort – giannisf

+0

es funktioniert jetzt. Vielen Dank :) –

Verwandte Themen