ExecutorService命名约定Java
我最近发现自己使用了一些ExecutorServices(SingleThreadScheduledExecutor和newFixedThreadPool),但我没有任何好名字。
是否有任何关于命名这些对象的指南或约定? 我看过用于SingleThreadScheduledExecutors的名称如“workerThread”,这是正确的,因为它们不完全是线程吗?
虽然这主要是基于意见的,但我在我的代码中使用以下约定:
- 引用
Executor
或ExecutorService
的Field或参数名为executor
或executorService
。 执行者的类型不应该通过字段名称来表示,否则您之后就不能轻易地更改执行程序的实现。 - 实现
Runnable
或Callable
以实现长时间运行的类通常会获得后缀Task
(如LoadTask
,ComputationTask
,…)。 (因为这样的操作不是线程,而是由线程执行 ,并且线程和操作之间通常没有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 +其他内容构建字符串并对结果进行哈希处理。 哈希冲突的可能性非常低……