ExecutorService that delegates to an existing Executor
but constrains the number of concurrently executing tasks to a pre-configured value.ConstrainedExecutorService.ConstrainedExecutorService.execute(Runnable) to
ensure that view of memory is consistent between different threads executing tasks serially.FrameSequenceViewConstrainedExecutorService with an unbounded
LinkedBlockingQueue queue.FrameSequenceViewFrameSequenceView is no longer needed in order to release resources and avoid memory leak.FrameSequenceSource object to display by FrameSequenceView.