Einfache Thread-Verwaltung - Java - Android

Ich habe eine Anwendung, die erstellt einen neuen thread, wenn ein user fragt nach einem Bild gefiltert werden.

Dies ist die einzige Art von Aufgabe, die ich habe und alle sind gleich wichtig.

Wenn ich Frage zu viele gleichzeitige threads (Max, die ich jemals wollen, ist 9) der thread-manager wirft einen RejectedExecutionException.

In der minute, was ich zu tun ist;

//Manage Concurrent Tasks
private Queue<AsyncTask<Bitmap,Integer,Integer>> tasks = new LinkedList<AsyncTask<Bitmap,Integer,Integer>>();

@Override
public int remainingSize() {
    return tasks.size();
}

@Override
public void addTask(AsyncTask<Bitmap, Integer, Integer> task) {
    try{
        task.execute(currentThumbnail);
        while(!tasks.isEmpty()){
            task = tasks.remove();
            task.execute(currentThumbnail);
        }
    } catch (RejectedExecutionException r){
        Log.i(TAG,"Caught RejectedExecutionException Exception - Adding task to Queue");
        tasks.add(task);
    }
}

Fügen Sie einfach die abgelehnt task in eine Warteschlange und das nächste mal ein thread gestartet wird die Warteschlange überprüft, um zu sehen, ob es zu einem Rückstau.

Die offensichtliche Problem mit diesem ist, dass, wenn die Letzte Aufgabe wird abgelehnt, beim ersten Versuch es wird nie neu gestartet werden (Erst, nachdem es nicht mehr gebraucht wird).

Nur Fragen, wenn es ein einfaches Modell, das ich verwenden sollte, die für die Verwaltung dieser Art der Sache. Ich brauche Aufgaben zu informieren, die Warteschlange, wenn Sie fertig sind.

InformationsquelleAutor gav | 2009-06-13
Schreibe einen Kommentar