当不同的线程访问静态方法时,在该方法中声明的对象是本地的或在java中共享的

Sam*_*msh 5 java concurrency

当不同的线程访问静态方法时,在该方法中声明的对象是本地的还是在java中的线程之间共享?

另外,调用thread.interrupt()正在执行i/o的线程是否安全?

Dav*_*ebb 8

static方法内声明的对象不在线程之间共享.在方法之外定义的对象static是共享的.

所以:

private static Object thisIsShared;

public static void myMethod() {
    Object thisIsNotShared = new Object();
}
Run Code Online (Sandbox Code Playgroud)

如果您要调用interrupt()执行I/O的线程,您应该查看使用实现InterruptableChannel接口的类.