1 package com.atlassian.sal.core.executor;
2
3 import java.util.concurrent.ScheduledExecutorService;
4 import java.util.concurrent.ScheduledFuture;
5 import java.util.concurrent.TimeUnit;
6 import java.util.concurrent.Callable;
7
8
9
10
11
12
13
14 public class ThreadLocalDelegateScheduledExecutorService extends ThreadLocalDelegateExecutorService implements
15 ScheduledExecutorService
16 {
17 private final ScheduledExecutorService delegate;
18
19 public ThreadLocalDelegateScheduledExecutorService(ThreadLocalContextManager manager,
20 ScheduledExecutorService delegate)
21 {
22 super(manager, delegate);
23 this.delegate = delegate;
24 }
25
26 public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
27 {
28 return delegate.schedule(new ThreadLocalDelegateRunnable(manager, command), delay, unit);
29 }
30
31 public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
32 {
33 return delegate.schedule(new ThreadLocalDelegateCallable<V>(manager, callable), delay, unit);
34 }
35
36 public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
37 {
38 return delegate.scheduleAtFixedRate(new ThreadLocalDelegateRunnable(manager, command), initialDelay, period,
39 unit);
40 }
41
42 public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
43 {
44 return delegate.scheduleWithFixedDelay(new ThreadLocalDelegateRunnable(manager, command), initialDelay, delay,
45 unit);
46 }
47 }