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

标签 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/

相关文章:

c++ - 指向 STL 容器线程安全(队列/双端队列)的指针

java - 不正确构造的对象是否只影响它在构造函数内发布的线程的可见性?

java - 我可以使用调度规则来代替同步吗

用于根据一组点估计多项式的 Java 库

java - 如何从多重映射中提取各个字符串值?

Apple PropertyList-1.0.dtd 的 java 库

java - 在程序退出之前执行的非阻塞 CompleteableFuture

java - 同步信息的设计建议

java - 检查DataInputStream是否有内容

java - 为什么我们不应该吞下 InterruptedException