JdkFutureAdapters.java
2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.google.common.util.concurrent;
import com.google.common.annotations.Beta;
import com.google.common.base.Preconditions;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicBoolean;
@Beta
public final class JdkFutureAdapters
{
public static <V> ListenableFuture<V> listenInPoolThread(Future<V> paramFuture)
{
if ((paramFuture instanceof ListenableFuture)) {
return (ListenableFuture)paramFuture;
}
return new a(paramFuture);
}
public static <V> ListenableFuture<V> listenInPoolThread(Future<V> paramFuture, Executor paramExecutor)
{
Preconditions.checkNotNull(paramExecutor);
if ((paramFuture instanceof ListenableFuture)) {
return (ListenableFuture)paramFuture;
}
return new a(paramFuture, paramExecutor);
}
static final class a<V>
extends ForwardingFuture<V>
implements ListenableFuture<V>
{
private static final ThreadFactory a;
private static final Executor b;
private final Executor c;
private final ExecutionList d = new ExecutionList();
private final AtomicBoolean e = new AtomicBoolean(false);
private final Future<V> f;
static
{
ThreadFactory localThreadFactory = new ThreadFactoryBuilder().setDaemon(true).setNameFormat("ListenableFutureAdapter-thread-%d").build();
a = localThreadFactory;
b = Executors.newCachedThreadPool(localThreadFactory);
}
a(Future<V> paramFuture)
{
this(paramFuture, b);
}
a(Future<V> paramFuture, Executor paramExecutor)
{
this.f = ((Future)Preconditions.checkNotNull(paramFuture));
this.c = ((Executor)Preconditions.checkNotNull(paramExecutor));
}
public final void addListener(Runnable paramRunnable, Executor paramExecutor)
{
this.d.add(paramRunnable, paramExecutor);
if (this.e.compareAndSet(false, true))
{
if (this.f.isDone()) {
this.d.execute();
}
}
else {
return;
}
this.c.execute(new Runnable()
{
public final void run()
{
try
{
Uninterruptibles.getUninterruptibly(JdkFutureAdapters.a.a(JdkFutureAdapters.a.this));
JdkFutureAdapters.a.b(JdkFutureAdapters.a.this).execute();
return;
}
catch (Error localError)
{
throw localError;
}
catch (Throwable localThrowable)
{
for (;;) {}
}
}
});
}
protected final Future<V> delegate()
{
return this.f;
}
}
}
/* Location: /home/merong/decompile/hackery-dex2jar.jar!/com/google/common/util/concurrent/JdkFutureAdapters.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/