2012-02-11 10 views
0

私はalaramマネージャーとbrodcastreceiversに関連する1つのアプリを実装しています。スレッドの複製?

私は毎分アラームをリセッティングしています。アラームマネージャーを通じて、私はbrodcastreseverクラスを呼び出します。 このクラスでは、私は1つのスレッドを実装しています。 i>o場合、スレッドは続行されます

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

    } 
    } 

次のようにコードがあります。 もう一度私のalaramマネージャーがbrodcast reseverクラスを呼び出します。その時にも新しいスレッドが古いスレッドで作成されます。これにより、スレッドの重複が増加します。

これを回避するにはどうすればよいですか?

+0

あなたは本当に十分な情報を提供していません。代わりにスレッドの作成を表示するようにコードスニペットを変更することを検討してください。 – Jivings

答えて

1

毎回新しいスレッドを作成するのではなく、処理するリクエストのキューを使用してみませんか? Like:

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