2016-09-23 8 views
2

Was ist das Java-Äquivalent für C# Interlocked.Exchange(Object, Object) : Object? Gibt es eine Möglichkeit in Java, die folgenden Aktionen in einem einzigen atomaren Schritt auszuführen ohne Sperre: 1) lokal speichern die Referenz einer Variablen 2) einen anderen Verweis auf die gleiche Variable setzen?Was ist die Java-Entsprechung für C# `Interlocked.Exchange (Object, Object): Object`?

+0

Sie übernehmen 'Interlocked' nicht nicht verwendet ein Schloss. Irgendeine Quelle dafür? –

+1

Es tut es nicht. Ich werde @ Jon-Skeet Ihre Frage beantworten lassen ;-) [Hier] (http://www.albahari.com/threading/part4.aspx#_Interlocked) finden Sie eine ausführliche Erklärung. – jeromerg

+0

Okay. Ich lese von deiner Frage, die du dachtest. –

Antwort

7

Es gibt keinen Betrieb dies für eine beliebige Variable zu tun, soweit ich weiß ... aber das ist, was der AtomicReference Typ ist für:

private AtomicReference<String> stringReference; 

... 

String oldValue = stringReference.getAndSet(newValue); 
Verwandte Themen