Executors - wie kann ich die Queue leeren?

Status
Nicht offen für weitere Antworten.
E

el richbo

Gast
Hi,

Ich will Executors verwenden...genauergesagt einen SingleThreadExecutor.

Wann immer ich einen neuen Task submitte sollen vorher entweder
a) alle Tasks in der Queue entfernt werden.
b) alle Tasks in der Queue die noch nicht ausgefuehrt wurden entfernt werden. Ein aktuell aktiver Task soll nicht entfernt werden und darf zuende arbeiten. Dann wird der neue hinzugefuegte Task ausgefuehrt.

Wie kann ich das am besten umsetzen?

Danke!
el richbo
 

byte

Top Contributor
Schreib Dir einen eigenen ExecutorService und leite ihn von ThreadPoolExecutor ab. Dann hast Du direkten Zugriff auf die Queue und kannst das von Dir gewünschte implementieren.
 
E

el richbo

Gast
byto hat gesagt.:
Schreib Dir einen eigenen ExecutorService und leite ihn von ThreadPoolExecutor ab. Dann hast Du direkten Zugriff auf die Queue und kannst das von Dir gewünschte implementieren.

Hab das auch so aehnlich gemacht. Komme aber nicht weiter - Problem:

1. Leere ich die Queue auf korrekte Weise? Sollte ich nicht lieber auf den Executor zugreifen als auf die Queue?
2. Wie leere ich die Queue bis auf den grade laufenden Task?

Code:
public class CanvasUpdateExecutorService {
	
	public static void main(String[] args) {
		CanvasUpdateExecutorService cues = new CanvasUpdateExecutorService();
		cues.updateCanvas("", null);
	}
	
	private ScheduledThreadPoolExecutor executor;
	
	public CanvasUpdateExecutorService() {
		executor = new ScheduledThreadPoolExecutor(1);
	}

	public void updateCanvas(String url, JLabel canvas) {
		dummySchedule();
		dummySchedule();
		dummySchedule();
		emptyExecutor();
		System.out.println(executor.getTaskCount());
	}

	private void dummySchedule() {
		executor.schedule(new Runnable(){
			@Override
			public void run() {
				System.out.println("Hello World!");
			}
		}, 1000, TimeUnit.MILLISECONDS);
		
		System.out.println(executor.getTaskCount());
	}

	private void emptyExecutor() {
		BlockingQueue<Runnable> queue = executor.getQueue();
		ArrayList<Runnable> c = new ArrayList<Runnable>();
		queue.retainAll(c);
		System.out.println(c.size());
	}

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Threads Java Chached Executors Service Allgemeine Java-Themen 12
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
mrStudent The method append is not applicable for the arguments (Queue<Integer>, Queue<Integer>) Allgemeine Java-Themen 4
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
Kirby.exe Nullpointer Exception bei Queue Allgemeine Java-Themen 5
P Durchlaufen einer Queue Allgemeine Java-Themen 9
W Queue Implementierung Allgemeine Java-Themen 6
S Queue Allgemeine Java-Themen 2
M Queues und Queue Interface Allgemeine Java-Themen 3
F Message Queue Tipps Allgemeine Java-Themen 3
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
M FIFO Queue: bytes in, float/double/etc out Allgemeine Java-Themen 5
D priority queue sortieren Allgemeine Java-Themen 10
F Threads, Queue, Gemeinsame Daten Allgemeine Java-Themen 6
G QUEUE und Threads Allgemeine Java-Themen 5
H Queue ausgeben Allgemeine Java-Themen 5
M Queue für spider/crawler? Allgemeine Java-Themen 2
M Reflection Queue auslesen Allgemeine Java-Themen 6
A Queue, beim dem das letzte Element herausfällt Allgemeine Java-Themen 4
C Untidy Priority Queue Allgemeine Java-Themen 2
S Suche schnellen Container Typ Queue Allgemeine Java-Themen 7
P Queue, Mausevents Allgemeine Java-Themen 4
G Queue erzeugen Allgemeine Java-Themen 2
T Queue-Hilfe benötigt Allgemeine Java-Themen 4
G Parameteriesierung von Queue funktioniert nicht Allgemeine Java-Themen 2
M Queue Allgemeine Java-Themen 11
G Klasse Queue Implementierung in Java Allgemeine Java-Themen 4
P JSpinner gibt leeren Wert zurück Allgemeine Java-Themen 5
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7
B Problem mit leeren Zeilen Allgemeine Java-Themen 2
T JTextField in Listener leeren Allgemeine Java-Themen 2
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
V Stringbuffer/builder leeren Allgemeine Java-Themen 2
7 Inhalt eines Objekts leeren aber Objekt nicht löschen Allgemeine Java-Themen 17
TheJavaKid DefaultTableModel komplett leeren Allgemeine Java-Themen 2
V Konsole leeren Allgemeine Java-Themen 13
bernd Array leeren Allgemeine Java-Themen 8
G Array leeren Allgemeine Java-Themen 1
A Datei leeren? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben