I have a
thread pool that I've created to handle some background processing in my app. I have three kinds of tasks that I need to run.
1. Normal task. This works correctly.
2. Paced task. This task can run concurrent with others, but can only run so often. I need it to play nice and not run multiple jobs at the same time.
3. Exclusive task. Only one of these can be running at a time. If a second gets added to the queue, it needs to interrupt the first one and take over.
Is there a way to handle this without making separate thread pools for each task? Or writing a custom ExecutorService?