私はコンピュータサイエンスをしている初年度の終わりにあり、何か基本的なものを使いこなしたいと思っています。私はスレッドを使用して、私は学ぶことができます。スレッドの基本を学ぶ良い例はどこにありますか?
覚えておくべき良い例は何ですか?
私はコンピュータサイエンスをしている初年度の終わりにあり、何か基本的なものを使いこなしたいと思っています。私はスレッドを使用して、私は学ぶことができます。スレッドの基本を学ぶ良い例はどこにありますか?
覚えておくべき良い例は何ですか?
並行処理でSunからthe java tutorialsを試す必要があります。
Webデータを処理して取得するイメージは、通常、ユーザーインターフェイスをブロックし、マルチスレッド設計の候補になります。
ServerSocketの例は、非常に簡単にテストし、かなり簡単にスレッドを使用します。
Doug Leaが書籍Concurrent Programming in Java: Design Principles and Patternsをお勧めします。 Doug Leaは私のSUNY Oswego教授の一人でした。偉大な教授、素晴らしい人です。この本は優れており、優れたマルチスレッドコードをJavaで記述するための素晴らしい情報を提供しています。
ああ、Doug Leaはほとんどのjava.util.concurrentを書きました。だから彼はかなり良い権威です;-)
私はバッチ処理ツールを書いて、私が待っていないと判断し、ファイルを並行して処理する方法を探し始めました。擬似コードを無効にする。私のJavaは本当に錆びています。
foreach(var item in list)
{
doSomethingSlow(item);
}
この場合、メソッド呼び出しのうち、スレッドを構築するために、いくつかのディスパッチコードを追加することが有益であるかもしれない:
は、あなたが何回かしばらく時間がかかります何かをする場合を考えてみましょう。私はそれを行うための通常のJavaの方法は、次のように匿名スレッドを外すことだと思います。より多くの制御やキャンセルなどのためにスレッドを指すことができる必要がある場合は、Threadから継承するクラスを実装してインスタンス化する必要があります。
new Thread({
public void run(){
doSomethingSlow(item);
}
}).start();
注:私は、これは正しい構文、あなた自身の危険を覚悟での使用であることをチェックしていません。
このアプローチでは、時間を節約して、並行して思考するための扉を開く必要があります。また、loop unwindingを見て、現在利用可能なさまざまな並列クラスライブラリで遊ぶこともできます。
私は一般的にコードのおもちゃの例を嫌い、有用なものを作成することで学ぶことを好むので、チュートリアルのアイデアをしばらく再生した後、すべてのプロジェクトで合理的なコードを少し入れておくことをお勧めしますそうすることが理にかなっているたびに。デバッグが非常に難しくなり、すべてのスレッドをあまりにも多くのオーバーヘッドをインスタンス化するスレッドが導入されるので、コードのすべての行を並列にすることはお勧めしません。
およびhttp://www.javaconcurrencyinpractice.com/(このサイト、および好ましくは本)。 –
はい、それは非常に簡単な例よりもさらに追求したい場合、それは素晴らしい本です。 –