2012-02-11 21 views
0

我正在實施一個與alaram manager和brodcastreceivers相關的應用程序。線程的重複?

我通過報警管理器在每分鐘內重複報警,我稱之爲brodcastresever類。 在這個類中我實現了一個線程。代碼如下:

runnable = new Runnable() 
{ 
    public void run() 
    { 
    while(i>o) 
    { 

    } 
    } 

如果i>o該線程將繼續。 另一次我的alaram經理致電brodcast resever類。那個時候還有一個新線程是用舊線程創建的。這增加了線程的重複。

如何避免這種情況?

+0

你還沒有真正提供足夠的信息。考慮更改您的代碼片段,以便它顯示線程創建。 – Jivings 2012-02-11 11:05:59

回答

1

爲什麼不使用請求隊列來處理,而不是每次都創建新線程。像:

if(queue==null) 
{ 
    queue= new ArrayList<Request>(); 
    queue.add(request); 
    start(); 
} 

public void run() 
{ 
    while(queue!=null && queue.size()>0) 
    { 
     Request request= fetchRequest(); 
     processRequest(request); 
    } 
} 

private Request fetchRequest() 
{ 
     Request request=queue.get(0); 
     queue.remove(0); 
     if(queue.size()==0) 
      queue=null; 
     return request; 
} 

注意它只是一個原型,而不是實現。

+0

嗨,如果你不介意請提前elabirate.thanks – kiran 2012-02-11 12:43:19