Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #7249
| Path | csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!feeder.news-service.com!newsfeed.kamp.net!newsfeed.kamp.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail |
|---|---|
| From | Robert Klemme <shortcutter@googlemail.com> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Using Enumerated Types as Array Indexes |
| Date | Fri, 19 Aug 2011 14:13:18 +0200 |
| Lines | 67 |
| Message-ID | <9b72b5FrgfU1@mid.individual.net> (permalink) |
| References | <b9ad6662-3240-4754-86a0-b715e8cdbc48@z7g2000vbp.googlegroups.com> <4e4b0d81$0$314$14726298@news.sunsite.dk> <j2f3ci$1lh$1@dont-email.me> <4e4b1fe4$0$314$14726298@news.sunsite.dk> <j2fc1g$b9j$1@dont-email.me> <6d418cda-dab3-43df-a9ec-293b43f2bbd8@glegroupsg2000goo.googlegroups.com> <vTL2q.38278$tp.27319@newsfe06.iad> <slrnj4ngfi.6gl.avl@gamma.logic.tuwien.ac.at> <f08d98e8-e04d-4d4e-b518-44bba735dba6@glegroupsg2000goo.googlegroups.com> <9b2aglFuj7U1@mid.individual.net> <j2hhnj$4js$1@dont-email.me> <j2hr70$qiq$1@dont-email.me> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=ISO-8859-1; format=flowed |
| Content-Transfer-Encoding | 7bit |
| X-Trace | individual.net oMltx+QKPT/KDsjg37QuUgn8KjwqZneUvDHbQ/9XZEZ9rWLvE= |
| Cancel-Lock | sha1:EA4CbIh9c+zjHvhzCnbXay6cE8o= |
| User-Agent | Mozilla/5.0 (Windows NT 6.0; WOW64; rv:6.0) Gecko/20110812 Thunderbird/6.0 |
| In-Reply-To | <j2hr70$qiq$1@dont-email.me> |
| Xref | x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:7249 |
Show key headers only | View raw
On 18.08.2011 03:50, Eric Sosman wrote: > On 8/17/2011 7:09 PM, markspace wrote: >> On 8/17/2011 10:02 AM, Robert Klemme wrote: >> >>> 1. There was an AtomicInteger initialized at startup with 0 which for >>> every request coming into that system was incremented in a thread safe >>> manner (incrementAndGet()). >> >> I'd be shocked if an int actually overflowed when counting requests like >> this, but that's all I can think of. 2^31 is such a huge number, I >> didn't think you could get there in practical cases. > > He *did* write "two months of uninterrupted [...] usage." Two > months ~= 60 days ~= 5 megaseconds, so a 2G counter overflows if it > increments at ~400 Hz or more, give or take a few backs of envelopes. Exactly. A good example where it pays off to do the basic math instead of relying on gut feelings. :-) >> Assuming that the AtomicInteger did overflow, then n % y produces >> negative numbers if n is negative, a clear AIOOB. >> >> Try : arr[ Math.abs( n ) % arr.length ]; > > Bzzzzt! Thank you for playing, go back to the rear of the line. > While awaiting your next opportunity, ponder: What is the sign of > Math.abs(Integer.MIN_VALUE)? All solutions to fix remainder into modulo but keep the wrap around which have been proposed so far share a common disadvantage: if the number range is not a multiple of the divisor the value distribution will not be uniform. Example: number range: [0,3] divisor: 3 value sequence: 0 : 0 1 : 1 2 : 2 3 : 0 wrap to 0 0: 50% 1: 25% 2: 25% Now with Integer.MAX_VALUE and realistic values for the divisor which are usually much smaller than Integer.MAX_VALUE the effects are not so dramatic but the repetition of a single value (0 in the example) might cause trouble for a round robin scheme - even if only once every two months (in other installations that would mean once every two weeks or even shorter). The solution I used to fix this employed a do while loop and compareAndSet() to reset the value to the beginning of the range (0 in this case) in a thread safe manner. http://download.oracle.com/javase/6/docs/api/java/util/concurrent/atomic/AtomicInteger.html#compareAndSet%28int,%20int%29 Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Using Enumerated Types as Array Indexes KevinSimonson <kvnsmnsn@hotmail.com> - 2011-08-16 07:53 -0700
Re: Using Enumerated Types as Array Indexes Patricia Shanahan <pats@acm.org> - 2011-08-16 09:30 -0700
Re: Using Enumerated Types as Array Indexes Tom Anderson <twic@urchin.earth.li> - 2011-08-16 21:37 +0100
Re: Using Enumerated Types as Array Indexes Gene Wirchenko <genew@ocis.net> - 2011-08-16 14:54 -0700
Re: Using Enumerated Types as Array Indexes Arne Vajhøj <arne@vajhoej.dk> - 2011-08-16 20:47 -0400
Re: Using Enumerated Types as Array Indexes Arne Vajhøj <arne@vajhoej.dk> - 2011-08-16 20:38 -0400
Re: Using Enumerated Types as Array Indexes markspace <-@.> - 2011-08-16 17:52 -0700
Re: Using Enumerated Types as Array Indexes Arne Vajhøj <arne@vajhoej.dk> - 2011-08-16 21:56 -0400
Re: Using Enumerated Types as Array Indexes markspace <-@.> - 2011-08-16 20:20 -0700
Re: Using Enumerated Types as Array Indexes Lew <lewbloch@gmail.com> - 2011-08-16 20:45 -0700
Re: Using Enumerated Types as Array Indexes Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-08-17 06:31 -0300
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-17 13:28 +0000
Re: Using Enumerated Types as Array Indexes Lew <lewbloch@gmail.com> - 2011-08-17 07:17 -0700
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-17 19:02 +0200
Re: Using Enumerated Types as Array Indexes markspace <-@.> - 2011-08-17 16:09 -0700
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-17 23:48 +0000
Re: Using Enumerated Types as Array Indexes markspace <-@.> - 2011-08-17 17:34 -0700
Re: Using Enumerated Types as Array Indexes Patricia Shanahan <pats@acm.org> - 2011-08-17 18:07 -0700
Re: Using Enumerated Types as Array Indexes markspace <-@.> - 2011-08-18 08:22 -0700
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-18 18:37 +0000
Re: Using Enumerated Types as Array Indexes markspace <-@.> - 2011-08-18 11:50 -0700
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-18 20:49 +0000
Re: Using Enumerated Types as Array Indexes markspace <-@.> - 2011-08-18 14:48 -0700
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-18 22:50 +0000
Re: Using Enumerated Types as Array Indexes Arne Vajhøj <arne@vajhoej.dk> - 2011-08-17 21:49 -0400
Re: Using Enumerated Types as Array Indexes Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-17 21:50 -0400
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-19 14:13 +0200
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-19 20:05 +0000
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-20 00:20 +0200
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-19 23:11 +0000
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-20 11:21 +0200
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-20 11:45 +0000
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-20 15:23 +0200
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-20 16:15 +0000
Re: Using Enumerated Types as Array Indexes Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-17 21:34 -0400
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-18 07:58 +0200
Re: Using Enumerated Types as Array Indexes Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-08-18 06:29 -0300
Re: Using Enumerated Types as Array Indexes RedGrittyBrick <RedGrittyBrick@spamweary.invalid> - 2011-08-18 10:47 +0100
Re: Using Enumerated Types as Array Indexes Lew <lewbloch@gmail.com> - 2011-08-18 11:35 -0700
Re: Using Enumerated Types as Array Indexes Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-08-18 18:30 -0300
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-19 14:57 +0200
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-19 20:10 +0000
Re: Using Enumerated Types as Array Indexes Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-08-19 19:12 -0300
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-20 00:26 +0200
Re: Using Enumerated Types as Array Indexes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-19 22:59 +0000
Re: Using Enumerated Types as Array Indexes Arne Vajhøj <arne@vajhoej.dk> - 2011-08-17 21:34 -0400
Re: Using Enumerated Types as Array Indexes Arne Vajhøj <arne@vajhoej.dk> - 2011-08-17 21:46 -0400
Re: Using Enumerated Types as Array Indexes markspace <-@.> - 2011-08-17 19:51 -0700
Re: Using Enumerated Types as Array Indexes David Lamb <dalamb@cs.queensu.ca> - 2011-08-17 08:29 -0400
Re: Using Enumerated Types as Array Indexes Robert Klemme <shortcutter@googlemail.com> - 2011-08-17 16:04 +0200
Re: Using Enumerated Types as Array Indexes Arne Vajhøj <arne@vajhoej.dk> - 2011-08-17 21:51 -0400
Re: Using Enumerated Types as Array Indexes Niklas Holsti <niklas.holsti@tidorum.invalid> - 2011-08-17 11:24 +0300
Re: Using Enumerated Types as Array Indexes Arne Vajhøj <arne@vajhoej.dk> - 2011-08-17 21:55 -0400
Re: Using Enumerated Types as Array Indexes Niklas Holsti <niklas.holsti@tidorum.invalid> - 2011-08-18 10:59 +0300
Re: Using Enumerated Types as Array Indexes Roedy Green <see_website@mindprod.com.invalid> - 2011-08-17 22:09 -0700
csiph-web