Size: a a a

StartAndroid Ru Chat

2021 March 20

v

vorobyoff in StartAndroid Ru Chat
Сделай volatile, в один момент времени доступ к ней будет у одного потока
источник

EI

Evgenii Ivanov in StartAndroid Ru Chat
Класс F редактировать не могу, потому что он является классом сторонней библиотеки
источник

v

vorobyoff in StartAndroid Ru Chat
В случае если ты не можешь так делать - то у одного потока будет своя локальная переменная f, вроде так работает
источник

v

vorobyoff in StartAndroid Ru Chat
Правда я хз как все будет работать потому что это проблема от противного что ли
источник

v

vorobyoff in StartAndroid Ru Chat
Обычно наоборот надо синхронизация на одной переменной
источник

v

vorobyoff in StartAndroid Ru Chat
Что бы там было актуальное значение
источник

v

vorobyoff in StartAndroid Ru Chat
Возможно будет хорошим вариантом какой нибудь фасад накрутить с синхронным методом
источник

v

vorobyoff in StartAndroid Ru Chat
Аля
class A {
val b = …
sync m(){…}
}
источник

EI

Evgenii Ivanov in StartAndroid Ru Chat
Думал сделать счетчик потоков, но не уверен, что когда буду менять его значение не залетит новый поток который поменяет этот счетчик
Или volatile заблочит доступ для нового потока, пока старый не закончит работу ?
источник

СП

Сергей П. in StartAndroid Ru Chat
Evgenii Ivanov
Подскажите с многопоточностью

Есть класс F у которого есть переменная A
Она может работать одновременно со множеством потоков, но ее нужно открывать до и закрывать после использования

В главном классе работаю с переменной A через инстанс F
Как можно сделать так, чтобы первый поток открывал переменную А, а последний закрывал бы ее ?
Ну volatile там стоит пометить все переменные. А счетчик менять исключительно  синхронизированным  сеттером
источник

СП

Сергей П. in StartAndroid Ru Chat
Evgenii Ivanov
Думал сделать счетчик потоков, но не уверен, что когда буду менять его значение не залетит новый поток который поменяет этот счетчик
Или volatile заблочит доступ для нового потока, пока старый не закончит работу ?
Это synchronize сделает у сеттера
источник

EI

Evgenii Ivanov in StartAndroid Ru Chat
Сергей П.
Это synchronize сделает у сеттера
Окей, спасибо
источник

СП

Сергей П. in StartAndroid Ru Chat
Evgenii Ivanov
Окей, спасибо
И у геттера от греха тоже
источник

СП

Сергей П. in StartAndroid Ru Chat
А так в переменную не лезть и она volatile
источник

СП

Сергей П. in StartAndroid Ru Chat
И еще синхронизация вокруг блока проверки условия того что счетчик 0
источник

I

Ivan in StartAndroid Ru Chat
vorobyoff
Сделай volatile, в один момент времени доступ к ней будет у одного потока
volatile совсем не про это
источник

V

Vladushka in StartAndroid Ru Chat
Ivan
volatile совсем не про это
+
Это наоборот пометка, что к переменной обращается много  потоков и любой поток может в любой момент времени изменить значение
источник

V

Vladushka in StartAndroid Ru Chat
А может и не изменить )
источник

V

Vladushka in StartAndroid Ru Chat
А вот как раз synchronized говорит, что код будет будет использоваться только одним потоком в момент времени
источник

Ф

Фёдор in StartAndroid Ru Chat
Evgenii Ivanov
Подскажите с многопоточностью

Есть класс F у которого есть переменная A
Она может работать одновременно со множеством потоков, но ее нужно открывать до и закрывать после использования

В главном классе работаю с переменной A через инстанс F
Как можно сделать так, чтобы первый поток открывал переменную А, а последний закрывал бы ее ?
Как сделать чтобы первый открывал — можно загуглить как делается thread safe синглтон, будет аналогичный код. А если кол-во обращений от потоков заранее неизвестно, то закрытие не сделать никак
источник