Geben Sie ein Problem wie folgt an:
Die Lösung lautet wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
Führen Sie diesen Code aus, um das Problem zu finden gleiche Ticketnummer Es kann an mehreren Ticketschaltern verkauft werden, und der Code, der Probleme verursacht, ist der if else-Anweisungsblock.
Die Lösung besteht darin, synchronisiert(Object){den Code, den Sie synchronisieren möchten} in dem Codesegment zu verwenden, das synchronisiert werden muss.
Der geänderte Code lautet wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
Führen Sie diesen Code aus und stellen Sie fest, dass die Ticketausstellung normal ist.
Thread 1 führt Code aus, der synchronisiert werden muss. Threads 2, 3, 4 ... werden blockiert und in den Thread-Wartepool verschoben, genau wie jemand, der die Tür schließt (verriegelt), bevor er zur Toilette geht . Kommen Sie heraus (entsperren), wenn Sie fertig sind, und dann können andere es weiter verwenden.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Thread-Sicherheitsprobleme in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!