0

マルチコア デスクトップで CPU 集中型の Java アプリケーションを並列化する必要がありますが、スレッド プログラミングにはあまり慣れていません。私はScalaを見ましたが、これは本当に時間がかかる新​​しい言語を学ぶことを意味します. Ateji PX Java 並列拡張機能も調べました。これは非常に使いやすいように見えますが、まだ評価する機会がありませんでした。誰もそれをお勧めしますか?他の提案を歓迎します。

よろしくお願いいたします。

明細書

4

5 に答える 5

5

複数のタスクを複数のスレッド/コアに分散するために、組み込みの ExecutorService を試すことをお勧めします。これがあなたにとって役に立たないかもしれない要件はありますか?

于 2011-01-17T12:55:04.853 に答える
2

Javaの並行性は以下を利用します:

http://download.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html

Javaでの並列プログラミングを以前よりもさらに簡単にします。そこから始めることをお勧めします-そのレベルのスレッドでの作業に不安がある場合は、さらに先に進むことについて2度考えます。何かを並列化するには、並行計算がどのように実行され、調整されるかについて、ある程度の技術的な快適さが必要です。私の意見では、それはそのフレームワークよりもはるかに簡単になることはできません-これは、選択肢が非常に少ない理由の一部です。

第二に、あなたが考えなければならない主なことは、並列化のための作業単位が何であるかです。作業単位が独立している場合(つまり、各並列タスクが他のタスクに影響を与えない場合)、同期についてあまり(またはまったく)心配する必要がないため、これは一般的にはるかに簡単です。計算が可能な限り独立するように、問題をモデル化する方法を考えることに力を注いでください。うまくモデル化すれば、ほぼ確実にコード行を減らすことができます(これによりエラーなどが減ります)。

確かに、自動的に並列化するフレームワークはエラーが発生しにくくなりますが、モデルの作業単位が並列化スキームに適合しない場合は最適ではない可能性があります。

于 2011-01-17T13:02:33.503 に答える
2

私はAteji PXの主任開発者です。おっしゃるとおり、スレッドセーフを保証することは重要なトピックです。これは非常に難しいものでもあり、手書きおよび手作業でチェックされた @ThreadSafe アノテーション以外にはあまり役に立ちません。たとえば、「スレッドの問題」を参照してください。

現在、Ateji PX 用の並列検証器に取り組んでいます。これが可能になったのは、Ateji PX の並列処理が (スレッドとは異なり) 構成的であり、円周率計算という健全な数学的基盤に基づいているためです。ツールがなくても、直感的かつ構成的な方法で並列処理を表現することで、"並列に考える" ことがはるかに容易になり、エラーを早期に発見できることが経験からわかっています。

于 2011-01-17T16:30:09.160 に答える
1

Ateji PX の Web サイトをすばやく閲覧しました。良い製品に思えますが、Ateji PX は複数のワーカーに作業負荷を分散させたり、複数のワーカー間のランデブー ポイントを作成したりするなど、高レベルの並列操作を実行する直感的でシンプルな方法しか提供しないため、ある時点でがっかりすることになるのではないかと心配しています。並列タスクなど。ただし、セクションのFAQで読むことができるように、データの依存関係をどのように検出して防止しますか? Ateji PX は、基になるコードがスレッド セーフであることを保証しません。したがって、いずれにせよ、Java スレッド プログラミングのスキルは引き続き必要です。

編集:

また、メンテナンス時期が来て、それを実行することができなくなった場合、Ateji PX よりも標準の Java マルチスレッド プログラミングのスキルを持つ請負業者、従業員、または研修生を見つける方が簡単であることを考慮してください。

最後に、30 日間の無料評価版があります。ぜひお試しください。

于 2011-01-17T13:03:44.523 に答える
0

Java 7 では、Doug lea による分散処理用の Fork Join が予定されています。

于 2011-01-17T13:11:16.850 に答える