--- old/src/java.base/share/classes/java/lang/Thread.java 2016-04-23 21:12:28.033228500 +0900 +++ new/src/java.base/share/classes/java/lang/Thread.java 2016-04-23 21:12:27.427228500 +0900 @@ -1226,7 +1226,8 @@ this.name = name; if (threadStatus != 0) { - setNativeName(name); + // Don't modify JNI-attached threads + setNativeName(name, false); } } @@ -2142,5 +2143,8 @@ private native void suspend0(); private native void resume0(); private native void interrupt0(); - private native void setNativeName(String name); + + // May be called directly via JNI or reflection (when permitted) to + // allow JNI-attached threads to set their native name + private native void setNativeName(String name, boolean allowAttachedThread); }