Мы часто используем volatile
, чтобы гарантировать, что переменная условия видна каждому потоку.
Я вижу, что поля volatile
все в коде пока primitive type
.
Имеет ли поле object
эту проблему?Например:
class a {
public String str;
public List list;
}
Если есть какие-то потоки, которые будут обращаться к str и списку, я должен добавить 'volatile'?
Я предполагаю, что каждый доступ к Object
будет получен непосредственно от Heap
, и Object
не будет кэшироваться как примитивный тип.
Это верно?