我想知道,2个不同的线程可以同时调用final静态方法吗? 静态 final方法会同步吗? 提前致谢。 BR 高拉夫
最佳答案
许多线程可以同时调用一个final静态方法(实际上可以同时调用任何静态方法,final
表示该方法不能被重写)。不,它本质上不是同步的,但它确实有局部变量。如果你想查看哪些线程在哪里,你可以随时打印当前线程 ID
static final void printThreadId() {
Thread ct = Thread.currentThread();
System.out.printf("%d %s%n", ct.getId(), ct.getName());
}
public static void main(String[] args) {
printThreadId();
Runnable r = new Runnable() {
@Override
public void run() {
printThreadId();
Thread.yield();
printThreadId();
}
};
Thread[] arr = { new Thread(r), new Thread(r) };
for (Thread th : arr) {
th.start();
}
Thread.yield();
printThreadId();
for (Thread th : arr) {
try {
th.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
输出示例
1 main
1 main
10 Thread-1
9 Thread-0
10 Thread-1
9 Thread-0
关于java - 对多个线程同时访问的静态 final方法的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27012657/