From e3a454a9004fc6ad5cd02bcac09b222d62212226 Mon Sep 17 00:00:00 2001 From: Chris Povirk Date: Wed, 5 Aug 2026 13:04:32 -0400 Subject: [PATCH] Annotate `Lock` and `ReentrantLock`. (prompted by https://github.com/google/xplat/commit/7ab1a2c5b64d57086a7d5050de3f517b4ffb8283) --- .../share/classes/java/util/concurrent/locks/Lock.java | 2 ++ .../classes/java/util/concurrent/locks/ReentrantLock.java | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/java.base/share/classes/java/util/concurrent/locks/Lock.java b/src/java.base/share/classes/java/util/concurrent/locks/Lock.java index bd6ce2eb6f9..ec5758a3256 100644 --- a/src/java.base/share/classes/java/util/concurrent/locks/Lock.java +++ b/src/java.base/share/classes/java/util/concurrent/locks/Lock.java @@ -36,6 +36,7 @@ package java.util.concurrent.locks; import java.util.concurrent.TimeUnit; +import org.jspecify.annotations.NullMarked; /** * {@code Lock} implementations provide more extensive locking @@ -166,6 +167,7 @@ * @since 1.5 * @author Doug Lea */ +@NullMarked public interface Lock { /** diff --git a/src/java.base/share/classes/java/util/concurrent/locks/ReentrantLock.java b/src/java.base/share/classes/java/util/concurrent/locks/ReentrantLock.java index d0ad4cae428..5c15ac5b984 100644 --- a/src/java.base/share/classes/java/util/concurrent/locks/ReentrantLock.java +++ b/src/java.base/share/classes/java/util/concurrent/locks/ReentrantLock.java @@ -38,6 +38,8 @@ import java.util.Collection; import java.util.concurrent.TimeUnit; import jdk.internal.vm.annotation.ReservedStackAccess; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; /** * A reentrant mutual exclusion {@link Lock} with the same basic @@ -106,6 +108,7 @@ * @since 1.5 * @author Doug Lea */ +@NullMarked public class ReentrantLock implements Lock, java.io.Serializable { private static final long serialVersionUID = 7373984872572414699L; /** @serial Synchronizer providing all implementation mechanics */ @@ -650,7 +653,7 @@ public final boolean isFair() { * * @return the owner, or {@code null} if not owned */ - protected Thread getOwner() { + protected @Nullable Thread getOwner() { return sync.getOwner(); }