Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #30983
| Path | csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!news.swapon.de!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Eric Sosman <esosman@comcast-dot-net.invalid> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Concurrency question? |
| Date | Sun, 01 Feb 2015 09:24:12 -0500 |
| Organization | A noiseless patient Spider |
| Lines | 50 |
| Message-ID | <malcth$3ko$1@dont-email.me> (permalink) |
| References | <maj766$qjf$1@dont-email.me> <maj9tb$l45$3@Gaia.teknon.de> <majen2$psi$1@dont-email.me> <mak7rp$d2e$1@dont-email.me> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=windows-1252; format=flowed |
| Content-Transfer-Encoding | 7bit |
| Injection-Date | Sun, 1 Feb 2015 14:23:46 +0000 (UTC) |
| Injection-Info | mx02.eternal-september.org; posting-host="bd4e1cba8d8592bec5d5ed9e4537fbfd"; logging-data="3736"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19I7oPqJ4Y8tu6Mq3/j+MUU" |
| User-Agent | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 |
| In-Reply-To | <mak7rp$d2e$1@dont-email.me> |
| Cancel-Lock | sha1:MUpdVnxBowP+HIUK8umxcXWlAFc= |
| Xref | csiph.com comp.lang.java.programmer:30983 |
Show key headers only | View raw
On 1/31/2015 10:51 PM, Knute Johnson wrote:
> On 01/31/2015 12:42 PM, Eric Sosman wrote:
>> On 1/31/2015 2:20 PM, Volker Borchert wrote:
>>> Knute Johnson wrote:
>>>> So I have a Map<Integer,String> [ ... ]
>>>>
>>>> Do you see any holes in my logic? Any suggestions?
>>>
>>> java.util.concurrent.ConcurrentHashMap<K,V>
>>
>> That's fine if the consistency criterion involves only single
>> mappings. But if different mappings within the same Map must "agree"
>> (in some application-dependent sense), atomicity of individual updates
>> isn't good enough.
>>
>> Only Knute knows for sure ...
>>
>
> When I first saw Volker's suggestion I thought, no I can't iterate over
> the map without some other synchronization but I looked into the
> ConcurrentHashMap docs and found;
>
> "Similarly, Iterators, Spliterators and Enumerations return elements
> reflecting the state of the hash table at some point at or since the
> creation of the iterator/enumeration. They do not throw
> ConcurrentModificationException. However, iterators are designed to be
> used by only one thread at a time."
>
> As subtle as his suggestion was, I think he may be on to something. I'm
> going to think about it some more but Volker may have the simplest
> solution.
Hmmm: I still don't think the table's own consistency guarantees are
necessarily strong enough for every application. For example, consider
a situation where the map expresses a "symmetric" relation where keys
and values are of the same type, and if A -> B then also B -> A. It
takes two operations to create the two mappings, and if the updating
thread gets interrupted between the two the fact that the reader sees
a consistent-from-the-table's-viewpoint state may be of small comfort.
So, again: I think it's up to you to figure out what "consistency"
means for your application. If ConcurrentHashMap's properties provide
what you need, wonderful! (And I thank you and Volker for teaching me
that its properties extend further than I'd thought!) But it's not
hard to imagine circumstances that require stronger guarantees than
CHM provides. "Only Knute knows for sure ..."
--
esosman@comcast-dot-net.invalid
"Don't be afraid of work. Make work afraid of you." -- TLM
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Concurrency question? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2015-01-31 10:34 -0800
Re: Concurrency question? Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-01-31 14:04 -0500
Re: Concurrency question? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2015-01-31 11:23 -0800
Re: Concurrency question? Arne Vajhøj <arne@vajhoej.dk> - 2015-01-31 14:12 -0500
Re: Concurrency question? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2015-01-31 11:33 -0800
Re: Concurrency question? v_borchert@despammed.com (Volker Borchert) - 2015-01-31 19:20 +0000
Re: Concurrency question? Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-01-31 15:42 -0500
Re: Concurrency question? Knute Johnson <eternal@knutejohnson.com> - 2015-01-31 19:51 -0800
Re: Concurrency question? Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-02-01 09:24 -0500
Re: Concurrency question? Kevin McMurtrie <mcmurtrie@pixelmemory.us> - 2015-01-31 22:59 -0800
Re: Concurrency question? Arne Vajhøj <arne@vajhoej.dk> - 2015-02-01 12:55 -0500
Re: Concurrency question? Silvio <silvio@internet.com> - 2015-02-01 22:19 +0100
Re: Concurrency question? Kevin McMurtrie <mcmurtrie@pixelmemory.us> - 2015-02-06 22:29 -0800
Re: Concurrency question? Knute Johnson <eternal@knutejohnson.com> - 2015-02-07 10:14 -0800
Re: Concurrency question? Robert Klemme <shortcutter@googlemail.com> - 2015-02-08 19:33 +0100
Re: Concurrency question? olupot douglas <olupotd3@gmail.com> - 2015-02-07 01:06 -0800
Re: Concurrency question? Haddock <ffm2002@web.de> - 2015-02-16 06:32 -0800
csiph-web