стек вызова статического метода в Java - PullRequest
1 голос
/ 20 сентября 2019

Допустим, у меня есть код:

public static int process(customObject obj){
// some process and then return some count
return obj.getCount();
}

Если два метода из двух разных классов вызывают process метод в одно и то же время.Как java будет управлять стеком вызовов в этом случае?

  • Будет ли только один стек вызовов для process, и вызывающий метод будет использовать этот стек совместно?
  • Будет ли два стека вызововдля process и вызывающий метод будет иметь свою собственную копию стека?

Если case-1 , как java узнает, какой результат должен вернуться к какому вызывающему методу (как изменится это поведение в многопоточной среде?) *

Примечание. CustomObject - это родительский тип, он может иметь несколько реализованных типов.

1 Ответ

1 голос
/ 20 сентября 2019

Стек для каждого потока не класс / объект / метод ...

Будет ли только один стек вызовов для процесса, и вызывающий метод разделит этот стек? - нет, нетбудет 2

Будет ли два стека вызовов для процесса и вызывающий метод будет иметь свою собственную копию стека? - каждый поток имеет один стек, но obj будетбыть одним и тем же объектом для обоих, поскольку он хранится в куче (учитывая, что вы будете использовать тот же объект в качестве параметра)

...