java - 为什么线程池独立地而不是并发地执行任务?

标签 java multithreading threadpool blockingqueue

我试图使有关线程池的基础知识变得非常强大。我了解到它在内部使用阻塞队列来“窃取”任务并将其运行到池中的给定线程中。这意味着如果我有10个任务和5个线程,则它只能同时运行5个任务,直到1个完全完成。
问题是:为什么不并发?为什么不对这10个任务进行时间切片呢?
实现的原因是什么?

最佳答案

Why not concurrently? Why not just time-slice those 10 tasks?


您可以拥有一个能够执行十个并发任务的线程池。您只需将其配置为至少具有十个工作线程。 “时间分片”任务是线程的工作。线程池的作用是:
  • 允许您的程序控制用于执行“后台”任务的线程数,以及
  • 允许您的程序重新使用线程,这比为每个新任务创建一个新线程然后在任务完成时销毁该线程要高效得多。
  • 关于java - 为什么线程池独立地而不是并发地执行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63452866/

    相关文章:

    java - 如何使用java在for循环中获取当前和下一个arraylist索引

    python - 同时启动进程python3

    c# - 线程池可用线程显示非常高的数字

    java - Fillo 依赖项不适用于 Maven 项目

    java - 使用 ArrayList 绘制图像(JPanel、JFrame)

    java - 无效的正则表达式 java : unclosed character class

    c# - 使用非静态方法的线程

    java - 用于矩阵乘法的线程程序

    java - 在哪里关闭多线程的连接/文件/日志?

    C# 是否可以中断 ThreadPool 中的特定线程?