2013-12-11 51 views
0

我創建一個框架,它運行的線程,並調用回調其他處理器的..我想知道的是,這種結構是有意義的,如果沒有什麼缺點,如何提高它..Java中的這種框架可能嗎?

class abstract Main { 
public abstract void handle(); 
} 

Class Sub { 
Main m = null; 

public Sub (Main m) 
{ 
    this.m = m; 
} 
public callBack() { m.handle(); } 

} 

class A extends Main implements Runnable 
{ 

public Sub obj = null; 
public A () {} 
public void setB(Sub b) { obj = b;} 

public run() 
{ 
/*do some process than call the callback of Sub */ 
    b.callback(); 
} 
public handle() { /* main handle */} 

} 

public static void main(String[] args) { 
    A aobj = new A(); 
    Sub newb = new Sub(aobj); 
    aboj.setB(newb); 
    aboj.run(); 
    } 
+0

這裏有單線程應用程序。你不會通過調用'run()'方法來啓動一個新的線程。 有關更多信息,請參閱http://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html。您正在嘗試創建的內容可能已經完成 - 請參閱「執行程序」段落。不要重新發明輪子。 –

+0

runnable的run方法不應該直接調用,而是使用Thread或運行runnable的東西。考慮到這一點,這段代碼對我來說似乎不屬於現有技術水平。 – Julien

+0

所以如果我想讓線程調用處理程序回調多線程什麼改變我需要待辦事項? – Neha

回答

2

爲了在一個單獨的線程中運行的處理程序,更換調用運行()由

new Thread(aobj).start(); 
+0

這運行線程,但我想在每X時間運行比我需要做...並將它是多線程? – Neha

1

聽一個作業完成有意義的 - 也就是說通俗圖書館番石榴這與ListenableFutureMoreExecutors實施。您將您的工作提交給執行者,接收未來,您可以添加Runnable,這將在任務完成時執行。

如果您需要定期執行,請看Executors.newScheduledThreadPool()