Java线程教程类型问题

当谈到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?

解决方法:

Thread pools通常用于不需要synchronization或高度为parallel的操作.

顺序打印数字0-99不是并发问题,需要同步线程以避免乱序打印.

我建议看一下Java concurrency lesson以了解Java中的并发性.

上一篇:c# – 限制线程池线程的数量


下一篇:Java中的任务执行程序,返回第一个结束任务