Code example for ArrayDeque

Methods: offer, poll

0
	private static class SerialExecutor implements Executor {
		final ArrayDeque<Runnable> mTasks = new ArrayDeque<Runnable>();
		Runnable mActive;
 
		public synchronized void execute(final Runnable r) {
			mTasks.offer(new Runnable() {
				public void run() { 
					try { 
						r.run();
					} finally { 
						scheduleNext(); 
					} 
				} 
			}); 
			if (mActive == null) {
				scheduleNext(); 
			} 
		} 
 
		protected synchronized void scheduleNext() { 
			if ((mActive = mTasks.poll()) != null) {
				THREAD_POOL_EXECUTOR.execute(mActive);
			} 
		} 
	}