<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: CopyOnWriteArrayList concurrency fun</title>
	<atom:link href="http://tech.puredanger.com/index.php/2009/02/02/copyonwritearraylist-concurrency-fun/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/</link>
	<description>Alex Miller&#039;s technical blog</description>
	<lastBuildDate>Mon, 06 Feb 2012 19:39:50 -0800</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
	<item>
		<title>By: Jed Wesley-Smith</title>
		<link>http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/comment-page-1/#comment-143538</link>
		<dc:creator>Jed Wesley-Smith</dc:creator>
		<pubDate>Mon, 16 Feb 2009 01:29:44 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/#comment-143538</guid>
		<description>sorry, previous comment got stuffed up...

Our &lt;a href=&quot;http://labs.atlassian.com/wiki/display/CONCURRENT/Atlassian+Concurrency+Utilities&quot; title=&quot;concurrent utilities&quot; rel=&quot;nofollow&quot;&gt; package has both &lt;a href=&quot;http://labs.atlassian.com/source/browse/CONCURRENT/trunk/src/main/java/com/atlassian/util/concurrent/CopyOnWriteMap.java?r=1406&quot; title=&quot;CopyOnWriteMap&quot; rel=&quot;nofollow&quot;&gt; CopyOnWriteMap&lt;/a&gt; and  &lt;a href=&quot;http://labs.atlassian.com/source/browse/CONCURRENT/trunk/src/main/java/com/atlassian/util/concurrent/CopyOnWriteSortedMap.java?r=1406&quot; title=&quot;CopyOnWriteSortedMap&quot; rel=&quot;nofollow&quot;&gt;CopyOnWriteSortedMap&lt;/a&gt;. These implementations can use any required implementation as the internal storage, and so support HashMap, LinkedHashMap, TreeMap etc. - as long as the &quot;non-mutative&quot; methods do not actually modify the internal structure, such as a LinkedHashMap with access ordering turned on.</description>
		<content:encoded><![CDATA[<p>sorry, previous comment got stuffed up&#8230;</p>
<p>Our <a href="http://labs.atlassian.com/wiki/display/CONCURRENT/Atlassian+Concurrency+Utilities" title="concurrent utilities" rel="nofollow"> package has both </a><a href="http://labs.atlassian.com/source/browse/CONCURRENT/trunk/src/main/java/com/atlassian/util/concurrent/CopyOnWriteMap.java?r=1406" title="CopyOnWriteMap" rel="nofollow"> CopyOnWriteMap</a> and  <a href="http://labs.atlassian.com/source/browse/CONCURRENT/trunk/src/main/java/com/atlassian/util/concurrent/CopyOnWriteSortedMap.java?r=1406" title="CopyOnWriteSortedMap" rel="nofollow">CopyOnWriteSortedMap</a>. These implementations can use any required implementation as the internal storage, and so support HashMap, LinkedHashMap, TreeMap etc. &#8211; as long as the &#8220;non-mutative&#8221; methods do not actually modify the internal structure, such as a LinkedHashMap with access ordering turned on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Taylor Gautier</title>
		<link>http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/comment-page-1/#comment-140689</link>
		<dc:creator>Taylor Gautier</dc:creator>
		<pubDate>Fri, 06 Feb 2009 10:30:03 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/#comment-140689</guid>
		<description>@Alex - oh, I know, I said &quot;related&quot; :)  The Clojure system reminds me of the NetApp filesystem, actually.  And also some of the experimental ideas for a COWTreeMap Geert and I dreamt up so long ago...</description>
		<content:encoded><![CDATA[<p>@Alex &#8211; oh, I know, I said &#8220;related&#8221; :)  The Clojure system reminds me of the NetApp filesystem, actually.  And also some of the experimental ideas for a COWTreeMap Geert and I dreamt up so long ago&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/comment-page-1/#comment-140180</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Wed, 04 Feb 2009 13:27:40 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/#comment-140180</guid>
		<description>@Taylor: The Clojure data structures differ in an important regard from the Java CopyOnWriteArrayList.  On a write, COWAL copies the entire data structure, which makes writes suck.  The Clojure data structures are &quot;persistent&quot; and use structural sharing.  Instead of copying the entire data structure, they reuse almost all of the existing data structure, which means that writes are actually very efficient.  The key thing of course is that the Clojure structures are always immutable which allows them to safely be reused in whole and part.</description>
		<content:encoded><![CDATA[<p>@Taylor: The Clojure data structures differ in an important regard from the Java CopyOnWriteArrayList.  On a write, COWAL copies the entire data structure, which makes writes suck.  The Clojure data structures are &#8220;persistent&#8221; and use structural sharing.  Instead of copying the entire data structure, they reuse almost all of the existing data structure, which means that writes are actually very efficient.  The key thing of course is that the Clojure structures are always immutable which allows them to safely be reused in whole and part.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Taylor Gautier</title>
		<link>http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/comment-page-1/#comment-140099</link>
		<dc:creator>Taylor Gautier</dc:creator>
		<pubDate>Wed, 04 Feb 2009 06:51:38 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/#comment-140099</guid>
		<description>This looks somewhat related to both COWAL and COWMap : http://blog.higher-order.net/2009/02/01/understanding-clojures-persistentvector-implementation/</description>
		<content:encoded><![CDATA[<p>This looks somewhat related to both COWAL and COWMap : <a href="http://blog.higher-order.net/2009/02/01/understanding-clojures-persistentvector-implementation/" rel="nofollow">http://blog.higher-order.net/2009/02/01/understanding-clojures-persistentvector-implementation/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/comment-page-1/#comment-139785</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Tue, 03 Feb 2009 01:32:17 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2009/02/02/copyonwritearraylist-concurrency-fun/#comment-139785</guid>
		<description>@Tim: Absolutely right as usual.</description>
		<content:encoded><![CDATA[<p>@Tim: Absolutely right as usual.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

