/ / Java Multithreading - Lese- und Schreib-Thread im synchronisierten Block - Java, Multithreading, synchronisierter, synchronisierter Block

Java Multithreading - Lese- und Schreib-Thread im synchronisierten Block - Java, Multithreading, synchronisierter, synchronisierter Block

Dies ist eine Frage aus einem Vorstellungsgespräch:

Wie erkenne ich den Lese- und den Schreib-Thread in einem synchronisierten Block?

Antworten:

2 für die Antwort № 1

Sie können immer etwas tun wie:

Thread current = Thread.currentThread()

Und nun; Wenn Sie eine Map / Liste / ... von Threads haben, können Sie Referenzen einfach vergleichen. Einfaches Beispiel:

Sie fügen Ihrer Klasse zwei Felder hinzu:

private Thread reader =
private Thread writer =

Und dann könntest du es tun

synchronized foo() {
if (Thread.currentThread() == reader) ...

Und für den Rekord: Obwohl die Dinge so einfach aussehen, sollte eine Person, die sich mit "diesem Problem" beschäftigt, eher zurücktreten: das riecht XY-Problem überall.

Bedeutung: in der "echten" Welt; Ich würde Code wie diesen betrachten schlechte Übung. Höchstwahrscheinlich versucht es ein Problem zu lösen, das auf andere Weise gelöst werden sollte!

Die Antwort auf einen Interviewer wäre also besser eine Kombination der direkten technischen Antwort; aber darauf hinweisen, dass "schlechte Praxis" -Ausgabe.


0 für die Antwort № 2

Sie können prüfen, ob der aktuelle Thread instanceOf Reader oder Writer ist