2012-02-11 23 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