<分区>
当不同的线程访问一个静态方法时,在该方法中声明的对象是本地的还是在java中的线程之间共享的?
此外,在执行 i/o 的线程上调用 thread.interrupt()
是否安全?
标签 java concurrency
<分区>
当不同的线程访问一个静态方法时,在该方法中声明的对象是本地的还是在java中的线程之间共享的?
此外,在执行 i/o 的线程上调用 thread.interrupt()
是否安全?
最佳答案
在static
方法中声明的对象不在线程之间共享。在方法外部定义为 static
的对象是共享的。
所以:
private static Object thisIsShared;
public static void myMethod() {
Object thisIsNotShared = new Object();
}
如果您要在执行 I/O 的线程上调用 interrupt()
,您应该考虑使用实现 the InterruptableChannel
interface 的类.
关于java - 当不同的线程访问一个静态方法时,在该方法中声明的对象是本地的还是在java中共享的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832129/