本文整理汇总了Java中edu.emory.mathcs.utils.ConcurrencyUtils.waitForCompletion方法的典型用法代码示例。如果您正苦于以下问题:Java ConcurrencyUtils.waitForCompletion方法的具体用法?Java ConcurrencyUtils.waitForCompletion怎么用?Java ConcurrencyUtils.waitForCompletion使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类edu.emory.mathcs.utils.ConcurrencyUtils
的用法示例。
在下文中一共展示了ConcurrencyUtils.waitForCompletion方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: ddxt2d0_subth
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void ddxt2d0_subth(final int isgn, final float[][] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
dhtColumns.forward(a[r]);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
dhtColumns.inverse(a[r], scale);
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例2: ddxt2d0_subth
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void ddxt2d0_subth(final int isgn, final double[][] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
dhtColumns.forward(a[r]);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
dhtColumns.inverse(a[r], scale);
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例3: ddxt2d0_subth
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void ddxt2d0_subth(final int isgn, final double[] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
dstColumns.forward(a, r * columns, scale);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
dstColumns.inverse(a, r * columns, scale);
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例4: ddxt2d0_subth
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void ddxt2d0_subth(final int isgn, final float[] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
dstColumns.forward(a, r * columns, scale);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
dstColumns.inverse(a, r * columns, scale);
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例5: ddxt2d0_subth
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void ddxt2d0_subth(final int isgn, final double[] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
dctColumns.forward(a, r * columns, scale);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
dctColumns.inverse(a, r * columns, scale);
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例6: ddxt2d0_subth
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void ddxt2d0_subth(final int isgn, final float[] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
dctColumns.forward(a, r * columns, scale);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
dctColumns.inverse(a, r * columns, scale);
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例7: xdft2d0_subth1
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void xdft2d0_subth1(final int icr, final int isgn, final float[] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (icr == 0) {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.complexForward(a, r * columns);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.complexInverse(a, r * columns, scale);
}
}
} else {
if (isgn == 1) {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.realForward(a, r * columns);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.realInverse(a, r * columns, scale);
}
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例8: xdft2d0_subth2
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void xdft2d0_subth2(final int icr, final int isgn, final float[][] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (icr == 0) {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.complexForward(a[r]);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.complexInverse(a[r], scale);
}
}
} else {
if (isgn == 1) {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.realForward(a[r]);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.realInverse2(a[r], 0, scale);
}
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例9: xdft2d0_subth1
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void xdft2d0_subth1(final int icr, final int isgn, final double[] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (icr == 0) {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.complexForward(a, r * columns);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.complexInverse(a, r * columns, scale);
}
}
} else {
if (isgn == 1) {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.realForward(a, r * columns);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.realInverse(a, r * columns, scale);
}
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例10: xdft2d0_subth2
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void xdft2d0_subth2(final int icr, final int isgn, final double[] a, final boolean scale) {
final int nthreads = ConcurrencyUtils.getNumberOfThreads() > rows ? rows : ConcurrencyUtils.getNumberOfThreads();
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int n0 = i;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
if (icr == 0) {
if (isgn == -1) {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.complexForward(a, r * columns);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.complexInverse(a, r * columns, scale);
}
}
} else {
if (isgn == 1) {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.realForward(a, r * columns);
}
} else {
for (int r = n0; r < rows; r += nthreads) {
fftColumns.realInverse2(a, r * columns, scale);
}
}
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
}
示例11: scale
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
private void scale(final float m, final float[] a, int offa, boolean complex) {
final float norm = (float)(1.0 / m);
int n2;
if (complex) {
n2 = 2 * n;
} else {
n2 = n;
}
int nthreads = ConcurrencyUtils.getNumberOfThreads();
if ((nthreads > 1) && (n2 >= ConcurrencyUtils.getThreadsBeginN_1D_FFT_2Threads())) {
final int k = n2 / nthreads;
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int firstIdx = offa + i * k;
final int lastIdx = (i == (nthreads - 1)) ? offa + n2 : firstIdx + k;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
for (int i = firstIdx; i < lastIdx; i++) {
a[i] *= norm;
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
} else {
for (int i = offa; i < offa + n2; i++) {
a[i] *= norm;
}
}
}
示例12: forward
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
/**
* Computes 1D real, forward DHT leaving the result in <code>a</code>.
*
* @param a
* data to transform
* @param offa
* index of the first element in array <code>a</code>
*/
public void forward(final float[] a, final int offa) {
if (n == 1)
return;
fft.realForward(a, offa);
final float[] b = new float[n];
System.arraycopy(a, offa, b, 0, n);
int nd2 = n / 2;
int nthreads = ConcurrencyUtils.getNumberOfThreads();
if ((nthreads > 1) && (nd2 > ConcurrencyUtils.getThreadsBeginN_1D_FFT_2Threads())) {
nthreads = 2;
final int k1 = nd2 / nthreads;
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int firstIdx = 1 + i * k1;
final int lastIdx = (i == (nthreads - 1)) ? nd2 : firstIdx + k1;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
int idx1, idx2;
for (int i = firstIdx; i < lastIdx; i++) {
idx1 = 2 * i;
idx2 = idx1 + 1;
a[offa + i] = b[idx1] - b[idx2];
a[offa + n - i] = b[idx1] + b[idx2];
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
} else {
int idx1, idx2;
for (int i = 1; i < nd2; i++) {
idx1 = 2 * i;
idx2 = idx1 + 1;
a[offa + i] = b[idx1] - b[idx2];
a[offa + n - i] = b[idx1] + b[idx2];
}
}
if ((n % 2) == 0) {
a[offa + nd2] = b[1];
} else {
a[offa + nd2] = b[n - 1] - b[1];
a[offa + nd2 + 1] = b[n - 1] + b[1];
}
}
示例13: forward
import edu.emory.mathcs.utils.ConcurrencyUtils; //导入方法依赖的package包/类
/**
* Computes 1D real, forward DHT leaving the result in <code>a</code>.
*
* @param a
* data to transform
* @param offa
* index of the first element in array <code>a</code>
*/
public void forward(final double[] a, final int offa) {
if (n == 1)
return;
fft.realForward(a, offa);
final double[] b = new double[n];
System.arraycopy(a, offa, b, 0, n);
int nd2 = n / 2;
int nthreads = ConcurrencyUtils.getNumberOfThreads();
if ((nthreads > 1) && (nd2 > ConcurrencyUtils.getThreadsBeginN_1D_FFT_2Threads())) {
nthreads = 2;
final int k1 = nd2 / nthreads;
Future<?>[] futures = new Future[nthreads];
for (int i = 0; i < nthreads; i++) {
final int firstIdx = 1 + i * k1;
final int lastIdx = (i == (nthreads - 1)) ? nd2 : firstIdx + k1;
futures[i] = ConcurrencyUtils.submit(new Runnable() {
@Override
public void run() {
int idx1, idx2;
for (int i = firstIdx; i < lastIdx; i++) {
idx1 = 2 * i;
idx2 = idx1 + 1;
a[offa + i] = b[idx1] - b[idx2];
a[offa + n - i] = b[idx1] + b[idx2];
}
}
});
}
ConcurrencyUtils.waitForCompletion(futures);
} else {
int idx1, idx2;
for (int i = 1; i < nd2; i++) {
idx1 = 2 * i;
idx2 = idx1 + 1;
a[offa + i] = b[idx1] - b[idx2];
a[offa + n - i] = b[idx1] + b[idx2];
}
}
if ((n % 2) == 0) {
a[offa + nd2] = b[1];
} else {
a[offa + nd2] = b[n - 1] - b[1];
a[offa + nd2 + 1] = b[n - 1] + b[1];
}
}