相关疑难解决方法(0)

线程池与线程产生

有人可以列出Thread Spawning与Thread Pooling之间的一些比较点,哪一个更好?请将.NET框架视为支持两者的参考实现.

multithreading

34
推荐指数
5
解决办法
3万
查看次数

ExecutorService与Casual Thread Spawner

我有一个关于如何ExecutorService在Java中工作的基本问题.

很难看出简单地创建Threads并行执行某些任务和将每个任务分配给它们之间的区别ThreadPool.

使用起来ExecutorService也非常简单和有效,所以我想知道为什么我们不一直使用它.

这只是一种比另一种方式更快地执行其工作的问题吗?

这里有两个非常简单的例子来说明两种方式之间的区别:

使用执行程序服务:Hello World(任务)

static class HelloTask implements Runnable {
    String msg;

    public HelloTask(String msg) {
        this.msg = msg; 
    }
    public void run() {
        long id = Thread.currentThread().getId();
        System.out.println(msg + " from thread:" + id);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用执行程序服务:Hello World(创建执行程序,提交)

static class HelloTask {
    public static void main(String[] args) {
        int ntasks = 1000;
        ExecutorService exs = Executors.newFixedThreadPool(4);

        for (int i=0; i<ntasks; i++) { 
            HelloTask t = new HelloTask("Hello from …
Run Code Online (Sandbox Code Playgroud)

java multithreading executorservice

22
推荐指数
2
解决办法
1万
查看次数

为什么通过newCachedThreadPool evil创建了ExecutorService?

Paul Tyma的演讲有这样一句话:

Executors.newCacheThreadPool恶,死死死

为什么这是邪恶的?

我会冒险猜测:是因为线程的数量会以无限的方式增长.因此,如果达到JVM的最大线程数,那么被斜线扫描的服务器可能会死掉?

java concurrency

8
推荐指数
2
解决办法
5040
查看次数