Например, у меня есть несинхронизированные методы следующим образом:Могут ли переменные/флаги влиять на другой поток на несинхронизированный метод?
public void nonSynchronized(){
boolean flag = false;
if(/*some condition*/){
flag = true;
}
//more line of codes here
if(flag == true){
//do something here - let's say line 33.
}
}
Что, если первый нить выполняет способ затем устанавливает flag
к true
, а перед выполнением линии 33 других нить выполняет метод затем сбрасывает переменную flag
на false
, Будет ли первая нить еще выполнить строку 33?
Привет, могу ли я задать вопрос? как насчет параметров? у потоков есть своя копия? Благодарю. –
Да, параметры также являются локальными переменными, и они также живут в стеке. Конечно, если параметры являются объектами, данные внутри этого объекта находятся в общей куче. – Thilo