gpt4 book ai didi

java - 执行者接受线程作为输入

转载 作者:行者123 更新时间:2023-11-29 06:58:24 24 4
gpt4 key购买 nike

我最近开始研究 Java Executor 框架。所有执行器都被设计为接受 Runnable 或 Callable。为什么执行器不接受 Thread 作为输入?

最佳答案

在谈论并发性时,始终区分线程任务非常重要的。

  • 任务 只是一件应该完成的工作 - 通常表示为 Runnable(或 Callable,以防万一任务产生结果)。

  • 线程 是一种使任务能够并行执行的机制。

ExecutorExecutorService 是一种能够执行任务 的工具。根据实现的不同,此执行器可能能够并行执行多个任务 - 通常通过在内部使用线程

因此,如果您正在使用 ExecutorExecutorService,您将移交任务,因此 Runnable 用于执行并让执行器为您管理它的线程

注意:由于 java.lang.Thread 实现了 Runnable,因此可以实例化一个 Thread 并将其传递给 执行(...)。这是一件非常糟糕的事情,因为执行程序只会调用线程的 run() 方法,就好像它是一个任务一样,并且不会启动线程。它不被认为是这样使用的——如果你在某处看到这个:这是错误的!

关于java - 执行者接受线程作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30005403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com