ExecutorService命名约定Java

我最近发现自己使用了一些ExecutorServices(SingleThreadScheduledExecutor和newFixedThreadPool),但我没有任何好名字。

是否有任何关于命名这些对象的指南或约定? 我看过用于SingleThreadScheduledExecutors的名称如“workerThread”,这是正确的,因为它们不完全是线程吗?

虽然这主要是基于意见的,但我在我的代码中使用以下约定:

  • 引用ExecutorExecutorService的Field或参数名为executorexecutorService 。 执行者的类型不应该通过字段名称来表示,否则您之后就不能轻易地更改执行程序的实现。
  • 实现RunnableCallable以实现长时间运行的类通常会获得后缀Task (如LoadTaskComputationTask ,…)。 (因为这样的操作不是线程,而是线程执行 ,并且线程和操作之间通常没有1:1的映射,所以调用它是错误的)。

这使得代码真正可读,并且它不会对线程使用做出任何假设,例如:

 for (String fileName : fileNames) { executor.execute(new LoadTask(fileName)); } 

(此示例可能会根据所使用的执行程序的类型,以串行,并行或其他任何方式执行所有装入任务。

关于’thread’一词的一个注释:

除了罕见的情况,我必须从Thread子类或创建引用(真实) Thread的字段时,不会在任何地方使用单词thread。

 public class WorkerThread extends Thread { ... } 

要么:

 Thread thread = Thread.currentThread(); 

这个问题类似 ,它可能能够帮到你。

您始终可以使用通用对象名称+ PID +其他内容构建字符串并对结果进行哈希处理。 哈希冲突的可能性非常低……