public static void call(String threadName) {
int abc=0;
++abc;
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
++abc;
System.out.println(threadName+ " call, num=" + abc);
}有多个线程同时调用该静态方法,请问他们是公用一个方法吗?
还是每个线程都有一个该方法的拷贝。
请告诉下方法调用的原理??比如从堆栈、方法区讲起

解决方案 »

  1.   

    类中的方法,在该类被加载到JVM内存中的时候。就存放在堆中的方法区了(线程共享)。当某个线程调用该方法的时候,就会去方法区找这个方法。然后去执行。
      

  2.   

    java程序中的方法是被存放在内存区域中专门划分出来的一块叫做代码区的地方 
    当方法被调用时再根据方法中调用的局部变量或对象分配入栈或堆里 
    方法的本质是一块代码
      

  3.   

    当线程A 调用静态方法method1还未执行完时,线程B调用该方法,需要等待么?
      

  4.   

    当线程A 调用静态方法method1还未执行完时,线程B调用该方法,需要等待么?