Я читал о том, как методы выполняются, и это то, что я понимаю: 1) Методы распределяются в области метода и поддерживается только одна копия, которая используется во всех экземплярах класса. 2) Когда метод вызывается из экземпляра затем текущего потока (однопоточный ENV) говорят, главное загружается, а затем стек загружается с помощью метода вызывается с помощью instance.eg:Как метод класса Java распределяется и выполняется в однопоточной и многопоточной среде?
main(String ags[])
{
A a = new A();
a.method();
}
// code of method
method()
{
for(int i=0;i<25;i++)
system.out.println(i);
}
так что для этой нити он имеет свой собственный стек вызовов, а затем на вызове метода тот же самый метод тела с его локальными переменными попадает в один и тот же стек выше основного метода.
Теперь, основываясь на понимании выше, я не понимаю, что в многопоточной среде, как будет работать тот же код, если я запустил два потока , и оба имеют один и тот же экземпляр. например:
//My run method for myRunnable
run()
{
a.method();
}
Thread one = new Thread(new myRunnable(a)); // object from above
Thread two= new Thread(new myRunnable(a));
Теперь, когда два потока начинают выполняться, у них будет собственный стек вызовов.
Как будет выполняться метод совместно используемого объекта в этом случае ?.
Благодаря
Да, но я не понял, что если оба потока загружают копию метода в свой собственный стек, значит, оба должны печатать последовательность из них, например, начиная с 1 до 25. Вместо этого вывод является общим, означает, что один поток запускает последовательность и идет до 5, затем два потока поднимаются оттуда и начинаются с 6 до некоторой точки, скажем 10, а затем начинается с 10. Как это происходит, если у них обоих есть собственный стек. –
Нет, этого не должно быть. Как вы это заметили? – Thilo
область метода синхронизирована, а также собранный мусор. Пример синхронизации области метода - это загрузка нового класса. Если два потока хотят загрузить новый класс, первая попытка блокирует область метода, загрузчик класса запускает и загружает класс, пока другой метод ждет. –