2014-09-02 23 views
1

我有從HTTP下載數據的線程。我使用流API每隔1秒鐘獲得約10分鐘。Java:定期將數據從線程發送到主類

當我從HTTP服務器收到數據後,我需要將此數據發送到MyMainClass中的方法。我怎麼能沒有靜態方法呢?我不喜歡使用靜態方法。

public class MyMainClass { 
    public static void main(String[] args) {    
     GetData getData = new GetData(); 
     getData.start();   
    } 

    public static void useText(String text) { 
     System.out.println(text); 
     // do something...   
    } 
} 


public class GetData extends Thread { 

    @Override 
    public void run() { 
     String text; 

     /* Download text from HTTP and save it to "text". 
     * Every 1 seconds to about 10 minutes using stream API. 
     * text= "abc..."; 
     * If there are no errors, run method never exit. 
     */ 
     MyMainClass.useText(text); 

    } 
} 

回答

2

讓你的方法的實例方法和創建類的實例可以傳遞給你的Thread實例

public static void main(String[] args) {    
    GetData getData = new GetData(new MyMainClass()); 
    getData.start();   
} 

public void useText(String text) { 
    System.out.println(text); 
    // do something...   
} 

GetDatarun方法,你就可以使用MyMainClass實例作爲回調。

public GetData extends Thread { 
    public GetData(MyMainClass instance) { 
     this.instance = instance; 
    } 

    private MyMainClass instance; 

    @Override 
    public void run() { 
     String text; 

     /* Download text from HTTP and save it to "text". 
     * Every 1 seconds to about 10 minutes using stream API. 
     * text= "abc..."; 
     * If there are no errors, run method never exit. 
     */ 
     instance.useText(text); 
    } 
} 
+0

謝謝,它的工作原理! 但是爲什麼你在GetData(new MyMainClass())中創建'MyMainClass'的新實例?如果使用'MyMainClass'類的新實例工作,線程如何從啓動類(啓動線程和主應用程序)使用方法? – martin 2014-09-02 02:50:12

+0

@馬丁我不明白你的問題。該方法是一種實例方法。你需要一個實例來調用它。 – 2014-09-02 02:53:56

相關問題