ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/ConcurrentHashMapTest.java
(Generate patch)

Comparing jsr166/src/test/tck/ConcurrentHashMapTest.java (file contents):
Revision 1.58 by jsr166, Mon Jan 8 03:37:59 2018 UTC vs.
Revision 1.61 by jsr166, Fri Oct 5 22:23:34 2018 UTC

# Line 838 | Line 838 | public class ConcurrentHashMapTest exten
838          assertEquals(mapSize, map.size());
839      }
840  
841 +    public void testReentrantComputeIfAbsent() {
842 +        ConcurrentHashMap<Integer, Integer> map = new ConcurrentHashMap<>(16);
843 +        try {
844 +            for (int i = 0; i < 100; i++) { // force a resize
845 +                map.computeIfAbsent(i, key -> findValue(map, key));
846 +            }
847 +            fail("recursive computeIfAbsent should throw IllegalStateException");
848 +        } catch (IllegalStateException success) {}
849 +    }
850 +
851 +    private Integer findValue(ConcurrentHashMap<Integer, Integer> map,
852 +                              Integer key) {
853 +        return (key % 5 == 0) ?  key :
854 +            map.computeIfAbsent(key + 1, k -> findValue(map, k));
855 +    }
856 +
857   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines