ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/concurrent/CopyOnWriteArrayList.java
(Generate patch)

Comparing jsr166/src/main/java/util/concurrent/CopyOnWriteArrayList.java (file contents):
Revision 1.137 by dl, Thu Jun 2 13:16:27 2016 UTC vs.
Revision 1.138 by jsr166, Sun Jun 5 00:56:44 2016 UTC

# Line 16 | Line 16
16  
17   package java.util.concurrent;
18  
19 + import java.lang.reflect.Field;
20   import java.util.AbstractList;
21   import java.util.Arrays;
22   import java.util.Collection;
# Line 1523 | Line 1524 | public class CopyOnWriteArrayList<E>
1524          }
1525      }
1526  
1527 <    // Support for resetting lock while deserializing
1527 >    /** Initializes the lock; for use when deserializing or cloneing. */
1528      private void resetLock() {
1529 +        Field lockField = java.security.AccessController.doPrivileged(
1530 +            (java.security.PrivilegedAction<Field>) () -> {
1531 +                try {
1532 +                    Field f = CopyOnWriteArrayList.class
1533 +                        .getDeclaredField("lock");
1534 +                    f.setAccessible(true);
1535 +                    return f;
1536 +                } catch (ReflectiveOperationException e) {
1537 +                    throw new Error(e);
1538 +                }});
1539          try {
1540 <            java.lang.reflect.Field f =
1541 <                CopyOnWriteArrayList.class.getDeclaredField("lock");
1531 <            f.setAccessible(true);
1532 <            f.set(this, new Object());
1533 <        } catch (ReflectiveOperationException e) {
1540 >            lockField.set(this, new Object());
1541 >        } catch (IllegalAccessException e) {
1542              throw new Error(e);
1543          }
1544      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines