Disruptor onEvent处理程序

时间:2015-09-14 10:34:07

标签: disruptor-pattern

在onEvent的各种示例中,有时变量被声明为final,有时则不是。

例如:

public void onEvent(final ValueEvent entry, final long sequence, final boolean onEndOfBatch)

反对

public void onEvent(ValueEvent entry, long sequence, boolean onEndOfBatch)

我可以对最终的原因和用途发表评论吗?

1 个答案:

答案 0 :(得分:0)

简短的回答是LMAX编码标准要求参数为sorted_averages.each do |(week, product), g| fields.each do |h| s = case h[:label] when "Week" then week.to_s when "Ending Date" then week_end_date[week] when "Product" then product else g[h[:label]] || '' end case h[:alignment] when :left then s = s.ljust(h[:width]) when :center then s = s.center(h[:width]) when :right then s = s.rjust(h[:width]) end print s end puts end Week Ending Date Product Nairobi Mombasa Kisuma Kakuru Eldoret 38 2014-09-21 Dry Maize 3140.00 2216.67 2513.13 3362.50 2311.43 38 2014-09-21 Coffee 2187.66 1841.43 39 2014-09-28 Dry Maize 2060.12 3105.61 ,但这只是一个惯例问题。

在参数中添加final只意味着该方法不能更改基元的值或重新分配通过的对象的引用。有关详细信息,请参见此处on final

许多人认为为参数指定一个新值是不好的做法,并导致许多微妙的错误。