Как ведет себя поток Java при внешнем доступе к методу? - PullRequest
2 голосов
/ 22 июня 2010

Предположим, у меня есть следующая тема:

public class MyThread {
    public void run() {
        while (true) {
            // do something forever
        }
    }
}

Затем я создаю поток следующим образом:

MyThread thread = new MyThread();

Что произойдет, если я сейчас позвоню

thread.performSomeFunction()

В частности, как executeSomeFunction взаимодействует с бесконечным циклом выше? Должен ли он ждать цикла, чтобы спать? Или они оба могут работать одновременно?

1 Ответ

3 голосов
/ 22 июня 2010

Если ваш thread.performSomeFunction() вызывается из другого потока, ему не нужно конфликтовать с бесконечным циклом, который выполняется в методе run(). В этом случае ваш экземпляр MyThread обрабатывается как другой объект, для которого могут быть вызваны методы.

Обратите внимание, что ваш бесконечный цикл не запустится, пока вы не запустите свой экземпляр thread.

Вы можете проверить это, поместив следующую строку как в метод run(), так и в метод perfomrSomeFunction():

System.out.println("in [METHOD NAME]: " + Thread.currentThread().getName());

и замените [METHOD NAME] фактическим именем метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...