Libraryless. Click here for Pure Java version (5279L/29K).
// synchronized sclass MoreEfficientCopyOnWriteList<A> extends NotifyingList<A> { bool hasIterator; *() { this(new L); } // Note: uses list as the inner list! *(L<A> list) { super(list); } public synchronized Iterator<A> iterator() { set hasIterator; ret super.iterator(); } public synchronized Spliterator<A> spliterator() { set hasIterator; ret super.spliterator(); } public synchronized ListIterator<A> listIterator() { set hasIterator; ret super.listIterator(); } public synchronized ListIterator<A> listIterator(int index) { set hasIterator; ret super.listIterator(index); } @Override // This is called in synchronized block void beforeChange { if (hasIterator) { setInnerList(cloneList(list)); hasIterator = false; } } void change {} }
Began life as a copy of #1033756
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, ekrmjmnbrukm, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1034557 |
| Snippet name: | MoreEfficientCopyOnWriteList - a better CopyOnWriteArrayList that only makes a copy when there is no iterator |
| Eternal ID of this version: | #1034557/11 |
| Text MD5: | 05fa41388e2bc75b3ee99446c138a4ac |
| Transpilation MD5: | 1b0b301c141a41022c8c1cc3f0f3298c |
| Author: | stefan |
| Category: | javax / collections |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2022-02-13 18:40:34 |
| Source code size: | 888 bytes / 40 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 559 / 710 |
| Version history: | 10 change(s) |
| Referenced in: | #1003674 - Standard Classes + Interfaces (LIVE continued in #1034167) |