Storm的ExecutorDetails类

时间:2015-08-11 02:45:45

标签: java apache-storm

目前,我正在调查 Storm 的源代码,我进入ExecutorDetailsscheduler包。这个课很简单,我只是 想要startTaskendTask字段的目的以及为什么hashcode()方法endTask乘以13,这是任意的还是有一些特殊意义?

package backtype.storm.scheduler;

public class ExecutorDetails {
    int startTask;
    int endTask;

    public ExecutorDetails(int startTask, int endTask) {
        this.startTask = startTask;
        this.endTask = endTask;
    }

    public int getStartTask() {
        return startTask;
    }

    public int getEndTask() {
        return endTask;
    }

    public boolean equals(Object other) {
        if (other == null || !(other instanceof ExecutorDetails)) {
            return false;
        }

        ExecutorDetails executor = (ExecutorDetails) other;
        return (this.startTask == executor.startTask) && (this.endTask == executor.endTask);
    }

    public int hashCode() {
        return this.startTask + 13 * this.endTask;
    }

    @Override
    public String toString() {
        return "[" + this.startTask + ", " + this.endTask + "]";
    }
}

1 个答案:

答案 0 :(得分:0)

我不完全确定startTaskendTask

  • 我认为执行时会分配一系列任务(从startTask到endTask)。

hashCode()(我确定):

  • 乘以13没有特殊意义。 hashCode()的目的是提供哈希值的统一分布(尽可能少的冲突)。在计算中使用素数是实现这一目标的标准方法(不仅仅是在Java中)。