Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8334572

Vector bulk operations are over-synchronized

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Not an Issue
    • Icon: P4 P4
    • None
    • 17, 21, 24
    • core-libs

      This shows up in one major codebase that migrated to JDK 17, which still uses Vector, and doing forEach on it. Current implementation of forEach is already synchronized:
      https://github.com/openjdk/jdk/blob/50bed6c67b1edd7736bdf79308d135a4e1047ff0/src/java.base/share/classes/java/util/Vector.java#L1353

      ...but then it calls `elementAt`:
      https://github.com/openjdk/jdk/blob/50bed6c67b1edd7736bdf79308d135a4e1047ff0/src/java.base/share/classes/java/util/Vector.java#L1359C27-L1359C36

      ...which is also synchronized:
      https://github.com/openjdk/jdk/blob/50bed6c67b1edd7736bdf79308d135a4e1047ff0/src/java.base/share/classes/java/util/Vector.java#L464

      Maybe bulk methods should really use `elementData`, not `elementAt`?

            xpeng Xiaolong Peng
            shade Aleksey Shipilev
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: