3

Java のスレッディングと並行処理の世界に関しては、私はかなり世間知らずです。私は現在、学ぼうとしています。同時実行がどのように機能するかを理解するために、簡単な例を作成しました。

これが私のコードです:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadedService {

    private ExecutorService exec;

    /**
     * @param delegate
     * @param poolSize
     */
    public ThreadedService(int poolSize) {
        if (poolSize < 1) {
            this.exec = Executors.newCachedThreadPool();
        } else {
            this.exec = Executors.newFixedThreadPool(poolSize);
        }
    }

    public void add(final String str) {
        exec.execute(new Runnable() {
            public void run() {
                System.out.println(str);
            }

        });

    }

    public static void main(String args[]) {
        ThreadedService t = new ThreadedService(25);
        for (int i = 0; i < 100; i++) {
            t.add("ADD: " + i);
        }
    }

}

コードで 0 ~ 99 の数字を順番に出力するにはどうすればよいですか?

4

4 に答える 4

0

問題は、定義上、スレッドには適していないことです。スレッドは独立して実行され、どのスレッドが最初に実行されるかを予測する方法は実際にはありません。

順次実行するようにコードを変更する場合は、addを次のように変更します。

public void add(final String str) {
    System.out.println(str);
}

あなたはスレッドを使用しておらず(少なくともあなた自身のものではありません)、すべてが順番に行われます。

于 2009-03-02T20:57:20.233 に答える