ThreadPoolExecutor | Die Aufgaben sollen reihe nach bearbeitet werden

Dit_

Bekanntes Mitglied
Hallo in meinem FTP Modul soll verhindert werden, dass die Aktionen die vom Benutzer ausgelöst wurden, nicht parallel bearbeitet werden. zb es werden gerade Dateien hochgeladen und man entfernt eine Datei.
Dafür habe ich diese Klasse geschrieben.

Was mir nicht gefällt ist das hier :
Code:
new ThreadPoolExecutor(1, 1, 2, TimeUnit.MINUTES, workQueue);

Gibt es vielleicht in java vordefinierte ThreadPools dafür?

Danke schon mal.

:oops:

Java:
public class BlockingQueueThreadExecuter {
    
    private final BlockingQueue<Runnable>      workQueue = new ArrayBlockingQueue<Runnable>(20);
    private final ThreadPoolExecutor           pool      = new ThreadPoolExecutor(1, 1, 2,
                                                                 TimeUnit.MINUTES, workQueue);
    
    private static BlockingQueueThreadExecuter _instance;
    
    /**
     * Neue Aufgabe
     * 
     * @param job
     */
    public static final void newJob(Runnable job) {
        if (_instance == null) {
            _instance = new BlockingQueueThreadExecuter();
        }
        _instance.pool.execute(job);
    }
    
    /**
     * @param <V>
     * @param task
     * @return
     */
    public static final <V> Future<V> newJob(Callable<V> task) {
        if (_instance == null) {
            _instance = new BlockingQueueThreadExecuter();
        }
        return _instance.pool.submit(task);
    }
    
}
 
M

maki

Gast
Du willst doch eigentlich gar keinen ThreadPool, du willst einen einzigen Thread der die Queue abarbeitet.
 

Kr0e

Gesperrter Benutzer
Gibt es in deinem Beispiel nicht eine Race Condition wenn parallel ausführende Threads newJob() aufrufen ? Das static field muss über synchronized geschützt werden. Eine Executor-Implementierung sollte eigentlich von beliebig vielen Threads parallel benutzt werden können. Deshalb auch im java.util.concurrent Packet...

Ich kenne jetzt deinen Anwendungsfall nicht, aber ich dachte mir, falls du diese Klasse konkurrierend benutzt werf ich das mal in den Ring^^

Zum eigentlcihen Problem stimme ich Empire Pheonix zu, eine Queue mit Runnables ist das, was du suchst. Falls du es unbedingt mit einem ExecutorService (Threadpool) machen willst, dann schau dir mal Executors.newSingleThreadExecutor();

Gruß,

Chris
 
B

bERt0r

Gast
zb es werden gerade Dateien hochgeladen und man entfernt eine Datei.
Dafür habe ich diese Klasse geschrieben.
Das sollte doch eigentlich vom Betriebssystem schon gemanaget werden. Wenn du eine Datei löschen willst, die von einem anderen Thread geöffnet ist, sollte eine IOException geworfen werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
S Threads ThreadPoolExecutor eigenartiges verhalten Allgemeine Java-Themen 5
brunothg ThreadPoolExecutor anhalten Allgemeine Java-Themen 4
S ThreadPoolExecutor: wie stelle ich fest dass meine Threads im Pool mit ihrer Arbeit fertig sind? Allgemeine Java-Themen 3
T ThreadPoolExecutor Allgemeine Java-Themen 6
O ThreadPoolExecutor Allgemeine Java-Themen 2
O Unterschied zwischen ThreadPoolExecutor und Executor Service Allgemeine Java-Themen 7
H Bestimmte Aufgaben zur bestimmter Zeit/ in bestimmten Intervallen Allgemeine Java-Themen 3
Gossi Threads mit unterschiedlichen Aufgaben in einer Klasse? Allgemeine Java-Themen 9
c_sidi90 Aufgaben für Einstellungstest (Azubicasting) gesucht Allgemeine Java-Themen 10
G Bringt es etwas System.gc() nach großen Aufgaben aufzurufen? Allgemeine Java-Themen 2
P JAVA Aufgaben Allgemeine Java-Themen 4
S Klasse die zwei Aufgaben übernimmt? Allgemeine Java-Themen 3
B Threads Multithreading Threads sollen warten Allgemeine Java-Themen 12
D mvc-Modell: wenn views voneinander wissen sollen Allgemeine Java-Themen 13
C Drag & Drop, Icons sollen getauscht werden Allgemeine Java-Themen 4
C reguläre Ausdrücke finden nicht was sie finden sollen Allgemeine Java-Themen 8
M JLabels löschen (sollen nicht mehr gezeichnet werden) Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben