Это для моего кирпича NXT.Синхронизация общей переменной среди потоков в DIFFERENT классах в java?
Предположим, у меня есть два РАЗЛИЧНЫХ класса, класс A
и класс B
, и каждый класс имеет поток OWN.
Однако существует статический экземпляр переменной с именем MotorA
, который разделяется обоими классами. Эта переменная MotorA
является ФИЗИЧЕСКИМ двигателем, движение которого может управляться двумя классами. Оба класса A
и классы B
могут управлять движением MotorA
, но я хочу, чтобы только один из них мог управлять MotorA
за раз.
Например, если класс A
пытается повернуть MotorA
вперед и класса B
пытается повернуть MotorA
назад, я только хочу класса A
вращаться MotorA
вперед и блок эффектов Класса Б.
Вопрос: Можно ли использовать SAME lock для синхронизации методов в потоках из DIFFERENT классов?
Да, вы можете; каждый ресурс должен быть защищен только одним замком. (Хотя может быть лучше иметь класс, который инкапсулирует доступ к двигателю и его блокировку.) –
Поскольку переменная двигателя разделяется между двумя потоками, «синхронизируйте» эту переменную двигателя, это совершенно законно. –
, в то время как 'MotorA' является статическим, поэтому синхронизация метода не помогает (если только методы не являются статическими), вам нужно заблокировать переменную внутри метода. –