"Parallel.For "forJava?
2023-12-06 03:14:30
質問
私は パラレル.For .net バージョンの Java に相当するものはありますか?
もしあれば、誰か例を提供してください。
どのように解決するのですか?
一番近いのは、そうでしょうね。
ExecutorService exec = Executors.newFixedThreadPool(SOME_NUM_OF_THREADS);
try {
for (final Object o : list) {
exec.submit(new Runnable() {
@Override
public void run() {
// do stuff with o.
}
});
}
} finally {
exec.shutdown();
}
TheLQさんのコメントから、SUM_NUM_THREADSを
Runtime.getRuntime().availableProcessors();
編集:基本的な "Parallel.For" の実装を追加することにしました。
public class Parallel {
private static final int NUM_CORES = Runtime.getRuntime().availableProcessors();
private static final ExecutorService forPool = Executors.newFixedThreadPool(NUM_CORES * 2, new NamedThreadFactory("Parallel.For"));
public static <T> void For(final Iterable<T> elements, final Operation<T> operation) {
try {
// invokeAll blocks for us until all submitted tasks in the call complete
forPool.invokeAll(createCallables(elements, operation));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static <T> Collection<Callable<Void>> createCallables(final Iterable<T> elements, final Operation<T> operation) {
List<Callable<Void>> callables = new LinkedList<Callable<Void>>();
for (final T elem : elements) {
callables.add(new Callable<Void>() {
@Override
public Void call() {
operation.perform(elem);
return null;
}
});
}
return callables;
}
public static interface Operation<T> {
public void perform(T pParameter);
}
}
Parallel.Forの使用例
// Collection of items to process in parallel
Collection<Integer> elems = new LinkedList<Integer>();
for (int i = 0; i < 40; ++i) {
elems.add(i);
}
Parallel.For(elems,
// The operation to perform with each item
new Parallel.Operation<Integer>() {
public void perform(Integer param) {
System.out.println(param);
};
});
この実装は、本当はもっと似たような パラレル.ForEach
編集 GitHubにアップしてみました。 GitHub上の並列用
関連
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
java send https request prompt java.security.cert.について。
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
型に解決できない エラー解決
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
-bash: java: コマンドが見つからない 解決方法
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
switch case文のcaseの後の列挙定数は列挙型なし
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ