下面列出了java.util.concurrent.CountedCompleter#tryComplete ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public final void compute() {
CountedCompleter<?> s = this;
char[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
int[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
float[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
byte[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
double[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
byte[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
short[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
float[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
char[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
char[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
float[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
long[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
float[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
float[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
char[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
int[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
int[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
float[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter<?> s = this;
char[] a = this.a, w = this.w; // localize all params
int b = this.base, n = this.size, wb = this.wbase, g = this.gran;
while (n > g) {
int h = n >>> 1, q = h >>> 1, u = h + q; // quartiles
Relay fc = new Relay(new Merger(s, w, a, wb, h,
wb+h, n-h, b, g));
Relay rc = new Relay(new Merger(fc, a, w, b+h, q,
b+u, n-u, wb+h, g));
new Sorter(rc, a, w, b+u, n-u, wb+u, g).fork();
new Sorter(rc, a, w, b+h, q, wb+h, g).fork();;
Relay bc = new Relay(new Merger(fc, a, w, b, q,
b+q, h-q, wb, g));
new Sorter(bc, a, w, b+q, h-q, wb+q, g).fork();
s = new EmptyCompleter(bc);
n = q;
}
DualPivotQuicksort.sort(a, b, b + n - 1, w, wb, n);
s.tryComplete();
}
public final void compute() {
CountedCompleter p;
CCF f = this;
int n = number;
while (n >= 2) {
new RCCF(f, n - 2).fork();
f = new LCCF(f, --n);
}
f.number = n;
f.onCompletion(f);
if ((p = f.getCompleter()) != null)
p.tryComplete();
else
f.quietlyComplete();
}