1
00:00:02,680 --> 00:00:04,990
Ciao, questo è che non vogliono perderti.

2
00:00:05,310 --> 00:00:11,050
Ora diamo un'occhiata alle variabili atomiche che sono state introdotte in Jollof dal libro Java Concurrency

3
00:00:11,050 --> 00:00:11,970
in pratica.

4
00:00:11,970 --> 00:00:17,890
Si riferisce a loro come a uno o due algoritmi migliori in quanto offrono la stessa visibilità della memoria a Indie

5
00:00:18,100 --> 00:00:19,250
come variabili volatili.

6
00:00:19,450 --> 00:00:25,800
Ma allo stesso tempo supportano anche l'Adama soupy come serrature hoverboard nei confronti di Atomic City.

7
00:00:25,870 --> 00:00:28,720
Sono vincolati a sole singole variabili.

8
00:00:28,930 --> 00:00:33,750
Cioè non possono proteggere un blocco di codice come il modo in cui avviene la sincronizzazione.

9
00:00:33,970 --> 00:00:39,960
Poiché stiamo ancora discutendo sulla visibilità della memoria, questa lezione è anche correlata al modello di memoria Java.

10
00:00:40,180 --> 00:00:43,470
Quindi andiamo avanti e vediamo quali sono le tabelle di peso atomico.

11
00:00:43,520 --> 00:00:51,680
E faremo anche un breve Demel che potresti chiamare questo codice esemplificativo dalla nostra discussione sulle condizioni di gara qui.

12
00:00:51,700 --> 00:00:58,870
Si suppone che il metodo get new idea restituisca il prossimo valore ID che dovrebbe essere univoco perché quell'ID qui è

13
00:00:58,930 --> 00:01:01,310
una variabile condivisa tra le minacce.

14
00:01:01,660 --> 00:01:06,100
Ma qui c'è una condizione di gara in quanto l'operazione di incremento non è un manichino.

15
00:01:06,500 --> 00:01:09,820
Non volevo leggere alcune istruzioni come possiamo vedere qui.

16
00:01:09,940 --> 00:01:16,180
In questo modo è possibile che i blueprint si trovino nello stesso tempo nel nuovo metodo ID su entrambi, leggendo lo

17
00:01:16,290 --> 00:01:19,570
stesso valore e incrementando quindi il valore una sola volta.

18
00:01:19,570 --> 00:01:25,050
Terminologia saggio tale tipo di guasto è indicato come fallimento di sicurezza.

19
00:01:25,110 --> 00:01:29,740
Ora qui dichiarare l'ID come volatile non lo aiuterà affatto. D.

20
00:01:29,920 --> 00:01:30,540
Destra.

21
00:01:30,610 --> 00:01:36,230
Sappiamo che può solo entrare nella visibilità della memoria profonda.

22
00:01:36,250 --> 00:01:42,890
Sappiamo che possiamo ottenere la città di Adamas facendo in modo che il metodo sia il metodo sincronizzato come vediamo qui.

23
00:01:43,360 --> 00:01:50,650
Ma l'intenzione qui è quella di eseguire un'operazione di incremento semplice e la sincronizzazione può essere costosa solo

24
00:01:50,800 --> 00:01:51,990
per farlo.

25
00:01:53,230 --> 00:02:00,050
Il fattore principale per essere costosi è il costo sostenuto nella terza sospensione sul processo di ripresa del blocco del

26
00:02:00,070 --> 00:02:04,020
fornitore per il metodo sincronizzato già acquisito da qualche altro thread.

27
00:02:04,810 --> 00:02:06,440
Quindi quel blocco non è disponibile.

28
00:02:06,670 --> 00:02:11,920
Richard ular sospenderebbe il thread nel contesto, il che significherebbe che quel thread sarà più

29
00:02:11,920 --> 00:02:14,250
di due blocchi in data successiva.

30
00:02:14,260 --> 00:02:19,410
Dovrebbe essere riportato nello stato di esecuzione prima di riportarlo in esecuzione.

31
00:02:19,840 --> 00:02:26,020
Quindi questo è un overhead piuttosto serio solo per fare una semplice operazione come l'incremento e potrebbe

32
00:02:26,020 --> 00:02:30,360
essere peggio se ci sono diversi thread che contendono il lock.

33
00:02:30,430 --> 00:02:37,120
Quindi una terza sospensione sulla riprogrammazione che si sta dimostrando costosa solo accovacciata e rilasciando ilok non

34
00:02:37,130 --> 00:02:39,090
è un grosso problema.

35
00:02:40,700 --> 00:02:46,910
Quindi la soluzione è usare le variabili economiche che fanno un po 'stupido in un

36
00:02:46,910 --> 00:02:53,830
rilievo comico, ma dice che la variabile ha qualcosa da fare a tutti gli idroni di Missippi

37
00:02:53,830 --> 00:03:01,870
sono rappresentati da classi di variabili atomiche che provengono dal pacchetto Jawa punto punto punto punto sulla console supporto operazioni

38
00:03:02,020 --> 00:03:03,920
economiche su singole variabili.

39
00:03:03,920 --> 00:03:11,200
OK, quindi qui davvero posto insieme con la classe lunga atomica che è una delle diverse classi economiche e ottenere un

40
00:03:11,200 --> 00:03:12,410
nuovo metodo ID.

41
00:03:12,430 --> 00:03:17,440
Ora cammina un metodo chiamato incremento e ottieni la variabile ID.

42
00:03:17,530 --> 00:03:21,370
Cosa fa quell'operazione di incremento che ha coinvolto tre sotto istruzioni.

43
00:03:21,460 --> 00:03:23,600
È entrambe le forme atomicamente.

44
00:03:23,680 --> 00:03:25,330
Quindi non c'è condizione di gara qui.

45
00:03:25,540 --> 00:03:31,300
Quindi, l'accesso a più minacce per ottenere un nuovo ID significava che il metodo di incremento

46
00:03:31,390 --> 00:03:39,390
e ottenimento garantirebbe che un valore univoco sia sempre un aspetto positivo di una variabile atomica è che ha la stessa semantica della

47
00:03:39,390 --> 00:03:40,440
variabile volatile.

48
00:03:40,540 --> 00:03:45,190
E allo stesso tempo ha anche il vantaggio della sicurezza atomica della sincronizzazione.

49
00:03:45,390 --> 00:03:51,870
Ma senza usare i lucchetti, non c'è nessuna sospensione generale della minaccia alla ripresa.

50
00:03:51,990 --> 00:03:59,400
Quindi la variabile atomica è che in realtà Denali economicamente sbagliato utilizza una variabile locale e quindi ha

51
00:03:59,400 --> 00:04:01,960
anche la stessa visibilità di memoria.

52
00:04:02,120 --> 00:04:08,880
Ma in effetti, come ho già detto in precedenza, gli abusi atomici sono considerati pubblicità migliore in quanto

53
00:04:08,940 --> 00:04:14,690
sono anche un supporto aggiuntivo al computer della città per la sincronizzazione della radio atomica.

54
00:04:14,700 --> 00:04:22,090
Entrambi sono a grana fine e limitano l'ambito a una singola variabile come l'ID in questo esempio di sincronizzazione, d'altra parte può

55
00:04:22,120 --> 00:04:28,360
rendere un blocco di codice da guardare in modo comico a causa del modo in cui vengono implementate le

56
00:04:28,360 --> 00:04:29,280
variabili atomiche.

57
00:04:29,460 --> 00:04:37,190
Non coinvolgere le serrature in modo che i libri a fumetti non utilizzino serrature, quindi non c'è una sospensione diretta alla ripresa.

58
00:04:37,220 --> 00:04:44,290
E lo fanno usando un approccio chiamato compare e swap per capire che consideriamo solo

59
00:04:44,290 --> 00:04:51,660
il codice sorgente reale dell'incremento e otteniamo il metodo stesso che viene invocato sulla radiazione atomica.

60
00:04:51,670 --> 00:04:58,300
Qui abbiamo un ciclo infinito e all'interno del ciclo stiamo semplicemente recuperando il valore corrente del peso

61
00:04:58,300 --> 00:05:02,450
atomico di esso e lo stiamo memorizzando nella corrente variabile.

62
00:05:02,680 --> 00:05:09,290
Usiamo semplicemente il metodo GET per questo che è un'altra questione nel longus atomico, stiamo considerando

63
00:05:09,290 --> 00:05:12,360
una variabile accanto alla corrente più una.

64
00:05:12,500 --> 00:05:17,350
E poi stiamo invocando un altro metodo per confrontare l'erba lunga non setizzata e atomica.

65
00:05:17,690 --> 00:05:23,570
E questo significava che camminando in un metodo che funziona con disoccupati comicamente una

66
00:05:23,600 --> 00:05:32,210
scheda di istruzioni confronta e scambia C S confronta e scambia i phos confronta il valore corrente che stiamo passando qui al

67
00:05:32,210 --> 00:05:34,470
valore corrente nella variabile atomica.

68
00:05:34,520 --> 00:05:42,350
In quel momento, utilizzo la corrispondenza, quindi implica che il valore corrente non è stato aggiornato da nessun altro thread

69
00:05:42,350 --> 00:05:45,630
poiché è stato impostato dal thread corrente.

70
00:05:45,920 --> 00:05:51,520
Quindi il valore della variabile economica corrente sarà scambiato con il valore nella variabile successiva.

71
00:05:52,540 --> 00:05:59,860
Quindi competere sul set in loco qui Rutan è cresciuto sul valore successivo viene restituito dal metodo, ma se il

72
00:05:59,860 --> 00:06:05,080
valore corrente passato qui era diverso dal valore corrente in quella variabile amik.

73
00:06:05,320 --> 00:06:10,690
Ciò implicherebbe che il valore corrente in una nota di rilievo comica sia stato aggiornato da qualche altro thread.

74
00:06:10,870 --> 00:06:16,930
Da quel momento è stato aggiunto da questo particolare thread e, a causa di tale slop, non si

75
00:06:16,980 --> 00:06:24,140
verificherà sull'esecuzione del calcolo, se la lettura errata del thread si interrompesse di nuovo per vedere se il valore può essere aggiornato

76
00:06:24,140 --> 00:06:25,420
nella successiva iterazione.

77
00:06:26,320 --> 00:06:31,010
In questo modo i thread continuano a provare finché non sono in grado di incrementare il valore.

78
00:06:31,390 --> 00:06:37,660
Su questo approccio di riprovare è molto più efficiente della costosa sospensione della presunzione che

79
00:06:37,780 --> 00:06:41,210
abbiamo con la sincronizzazione con la sincronizzazione.

80
00:06:41,210 --> 00:06:44,600
Quella discussione è fondamentalmente bloccata qui.

81
00:06:44,620 --> 00:06:51,570
Non vi è alcun blocco e quindi questo tipo di algoritmo è indicato come un algoritmo non bloccante.

82
00:06:51,790 --> 00:06:54,660
OK si chiama un algoritmo non bloccante.

83
00:06:55,130 --> 00:07:02,650
Usato qui viene anche indicato come blocco ottimistico in quanto qui il valore della variabile x viene calcolato

84
00:07:03,040 --> 00:07:10,850
per primo in base all'assunzione ottimistica secondo cui nessun altro thread avrebbe già detto lo stesso valore, quindi l'ipotesi ottimistica

85
00:07:10,850 --> 00:07:11,920
è vera.

86
00:07:11,930 --> 00:07:17,800
La memoria condivisa viene aggiornata con il valore successivo senza bloccare poiché l'opzione è falsa.

87
00:07:17,870 --> 00:07:21,360
Il lavoro è andato perso, ma non c'è ancora nessun blocco coinvolto.

88
00:07:21,440 --> 00:07:27,230
Il blocco tradizionale con sincronizzazione è a volte indicato come blocco pessimistico poiché è opposto

89
00:07:27,230 --> 00:07:33,830
a quello di blocco ottimistico. Le variabili edonistiche sono particolarmente adatte per fare cose come in questo esempio

90
00:07:33,830 --> 00:07:41,070
in cui generiamo numeri univoci così come vediamo lo scopo di tutta la mia città è un singolo variabile e

91
00:07:41,490 --> 00:07:44,710
che è a grana fine quanto può ottenere.

92
00:07:44,710 --> 00:07:47,500
E ha anche una visibilità fangosa alcuni giorni.

93
00:07:47,520 --> 00:07:53,820
Mi mancano davvero Polychromic sono stati in grado di elaborare che sono divisi in quattro gruppi.

94
00:07:53,850 --> 00:08:02,380
Aggiornamenti del campo Arrius di Skylar su video comp è che ha avuto altre classi che rientrano nello scaler che abbiamo sotto per discutere di Accomack

95
00:08:02,380 --> 00:08:05,290
a lungo e oltre il loro lungo Tolmach.

96
00:08:05,300 --> 00:08:11,030
Abbiamo anche un fumetto in fumetti più grandi di fumetti nerd di Boullion, se non ne usiamo affatto

97
00:08:11,050 --> 00:08:12,170
delle classi leggibili.

98
00:08:12,350 --> 00:08:18,050
Probabilmente queste classi killer sono quelle che più probabilmente usano classi che rientrano in altri gruppi non

99
00:08:18,140 --> 00:08:23,250
sono comunemente usate e quindi non le discuteremo qui, ma le note supplementari nella sezione delle

100
00:08:23,330 --> 00:08:23,940
risorse.

101
00:08:23,960 --> 00:08:33,960
Discuteremo brevemente di quanto tempo fa l'industria atomica a fare riferimento ad essa.

102
00:08:34,170 --> 00:08:38,820
Queste classi Robach corrispondenti a Eddie non hanno aggiornato gli elementi.

103
00:08:38,880 --> 00:08:39,720
Non ricordo.

104
00:08:41,470 --> 00:08:48,010
Sotto gli aggiornamenti di campo abbiamo Longfield atomico un operatore di campo atomico e più grande e un programma

105
00:08:48,170 --> 00:08:50,260
di aggiornamento di riferimento Accomack.

106
00:08:50,470 --> 00:08:57,430
E queste sono classi di utilità basate sulla riflessione che abbandonano le corrispondenti variabili volatili e non possono

107
00:08:57,430 --> 00:09:00,280
eseguire affatto operazioni su di esse.

108
00:09:00,340 --> 00:09:03,150
Indovina cosa funzionano su quelle che vengono chiamate variabili.

109
00:09:03,190 --> 00:09:09,490
Un caso d'uso è che quale una variabile condivisa si vorrebbe che fosse usata principalmente come

110
00:09:09,490 --> 00:09:17,380
una variabile volatile semplice, ma a volte si vorrebbe eseguire alcune operazioni atomiche su di essa per questo utilizzando grassers atomici

111
00:09:17,380 --> 00:09:19,670
che potrebbero non essere necessari.

112
00:09:19,930 --> 00:09:25,540
Quindi puoi usare questo campo un po 'di grassers solo quando Missippi è richiesto per il resto del

113
00:09:25,540 --> 00:09:26,050
tempo.

114
00:09:26,140 --> 00:09:31,780
Il testamento è fatto da te e verrebbe utilizzato come un secondo controllo o supplementare non nella sezione delle

115
00:09:31,840 --> 00:09:32,410
risorse.

116
00:09:32,410 --> 00:09:40,050
Per maggiori dettagli su questo, infine, sotto comp, su un riferimento marcabile atomico affidabile, un riferimento

117
00:09:40,070 --> 00:09:41,510
con timbro atomico.

118
00:09:41,510 --> 00:09:42,570
Queste classi sono di Ewell.

119
00:09:42,610 --> 00:09:49,820
Se si desidera accoppiare un riferimento a un oggetto booleano con un numero intero dispari se è un flag booleano,

120
00:09:49,820 --> 00:09:55,940
sarebbe un riferimento a livello atomico altrimenti sarebbe un riferimento a un timbro atomico in caso

121
00:09:55,940 --> 00:09:57,140
di numero intero.

122
00:09:57,380 --> 00:10:00,780
Ancora una volta si prega di fare riferimento alle note supplementari.

123
00:10:01,040 --> 00:10:06,280
Non quello che atomico lungo un intero atomico sono sottoclassi del numero di classe.

124
00:10:06,500 --> 00:10:13,470
Bene, il resto sono sottoclassi di classi di oggetti quindi questo riguarda Adamek perché non è appropriato darti il

125
00:10:13,590 --> 00:10:15,720
meglio di entrambi i mondi.

126
00:10:15,730 --> 00:10:23,840
Variabili e meccanismo di blocco in modo tale che il blocco del supporto liberi le trappole se la programmazione su

127
00:10:23,860 --> 00:10:32,240
singole variabili con la semantica di memoria degli algoritmi non è la sincronizzazione, ma si limita a eclissarne una breve su

128
00:10:32,250 --> 00:10:33,540
un intero amik.

129
00:10:33,740 --> 00:10:37,390
Ok ok li fa tutti.

130
00:10:37,400 --> 00:10:41,320
Ho creato questa nuova classe chiamata simulatore di eventi Meet Up.

131
00:10:41,320 --> 00:10:43,660
Conoscete un pacchetto di concorrenza qui.

132
00:10:43,670 --> 00:10:49,000
Fondamentalmente simuleremo il suo incontro con l'evento e incontreremo dot com.

133
00:10:49,340 --> 00:10:51,360
Quindi devi aver sentito parlare di meet com.

134
00:10:51,530 --> 00:10:55,610
Se no, è un sito di social networking molto popolare.

135
00:10:55,640 --> 00:10:59,570
Aiuta ad organizzare riunioni di gruppo locali.

136
00:10:59,630 --> 00:11:05,870
E ci sono incontri di gruppo di questo tipo e tante città e villaggi in tutto il

137
00:11:05,870 --> 00:11:06,440
mondo.

138
00:11:06,830 --> 00:11:13,670
E questi incontri possono essere in diverse categorie come l'arte della tecnologia o lo yoga o qualsiasi categoria che si

139
00:11:13,670 --> 00:11:14,530
possa pensare.

140
00:11:14,750 --> 00:11:15,170
OK.

141
00:11:15,290 --> 00:11:18,450
Quindi qui stiamo solo simulando un singolo evento di meetup.

142
00:11:18,740 --> 00:11:21,110
E l'U. N. normalmente ha un nome

143
00:11:21,460 --> 00:11:27,170
OK il nome dell'evento meetup e anche il numero di partecipanti che partecipano all'evento

144
00:11:27,170 --> 00:11:27,860
meetup.

145
00:11:28,030 --> 00:11:28,540
OK.

146
00:11:28,700 --> 00:11:33,480
Sui partecipanti il conteggio dei partecipanti viene catturato da questo conteggio affidabile.

147
00:11:33,740 --> 00:11:38,630
Quindi questo evento multimediale è fondamentalmente un Mesta statico attraverso un membro statico non sono qui.

148
00:11:38,680 --> 00:11:44,630
Avuto l'unamiable solo il nome dell'evento meetup un account è per catturare il numero di persone

149
00:11:44,630 --> 00:11:46,020
che partecipano all'evento.

150
00:11:46,200 --> 00:11:52,940
OK, quindi stiamo usando un intero atomico qui e lo inizializziamo con uno perché l'evento

151
00:11:52,940 --> 00:11:57,130
stesso ha un organizzatore e supponiamo che lo assisterà.

152
00:11:57,360 --> 00:12:03,620
Quindi incontrarsi qui è un costruttore qui per inizializzare quel nome e ne abbiamo tre che uno sta

153
00:12:03,790 --> 00:12:09,680
frequentando l'altro è non-offendere non frequentare e il terzo è qualcosa chiamato Get gone che dà il

154
00:12:10,010 --> 00:12:12,090
conteggio del numero di partecipanti.

155
00:12:12,230 --> 00:12:18,580
OK, quindi il problema è offensivo se un utente particolare aggiungerà lui o lei invocherà

156
00:12:18,590 --> 00:12:27,000
questo metodo e l'utente può portare con sé un certo numero di ospiti in modo da avere questo parametro di guest andato.

157
00:12:27,200 --> 00:12:32,630
Ma se il parametro guest può essere uguale a 1 significa che solo l'utente sta andando a partecipare e non

158
00:12:32,630 --> 00:12:33,730
ci sono altri ospiti.

159
00:12:33,920 --> 00:12:40,500
OK, quindi se gli ospiti contano come uno stiamo semplicemente usando invocare l'incremento e arrivare alla radio.

160
00:12:40,500 --> 00:12:42,020
Bill incontrovertibile.

161
00:12:42,140 --> 00:12:48,570
Come ho detto prima, è un intero atomico e l'incremento non ottiene l'ordine di discuterne nella lezione.

162
00:12:49,730 --> 00:12:52,010
Sleights e f.

163
00:12:52,150 --> 00:12:53,810
Il conteggio è maggiore di uno.

164
00:12:53,980 --> 00:12:55,240
Quindi siamo a Woking.

165
00:12:55,300 --> 00:12:57,930
E non importa che macchina abbia.

166
00:12:58,070 --> 00:13:01,170
OK quindi Dunelm è molto ovvio qui.

167
00:13:01,180 --> 00:13:06,580
Sta per aggiungere questo guest chiamato al valore corrente e contare su di esso e su quel valore.

168
00:13:06,790 --> 00:13:09,590
Quindi entrambi restituirebbero un intero valore qui.

169
00:13:09,800 --> 00:13:12,500
OK perché è tutto intero.

170
00:13:12,550 --> 00:13:15,850
Ora venire a non frequentarlo fa esattamente l'opposto.

171
00:13:15,880 --> 00:13:21,300
Quindi, se l'utente sceglie di non agire così inizialmente potrebbe dover agire.

172
00:13:21,550 --> 00:13:25,050
Ma poi più tardi potrebbero voler ritirare la loro presenza.

173
00:13:25,060 --> 00:13:31,270
Nel qual caso invocheranno questo metodo e passeranno le bombole del gas anche inizialmente devono avere che

174
00:13:31,270 --> 00:13:37,270
devono aver detto che ci sarà la conversione di un certo numero di ospiti così quando si

175
00:13:37,270 --> 00:13:40,250
ritirano dovranno anche specificare lo stesso conteggio.

176
00:13:40,260 --> 00:13:41,150
Il guascone

177
00:13:41,320 --> 00:13:47,200
Quindi, se il numero di ospiti è uguale a 1, invochiamo il decremento sulla carta qui quando in Non pensavo che

178
00:13:47,240 --> 00:13:51,600
stessimo invocando l'incremento non andare avanti qui è un decremento non ottenere un conteggio F.

179
00:13:51,620 --> 00:13:53,560
Il numero di indovini è maggiore di 1.

180
00:13:53,800 --> 00:13:56,800
Quindi stiamo semplicemente usando questa logica qui.

181
00:13:56,800 --> 00:14:00,480
Quindi abbiamo qui il campo aggiornato e stiamo ottenendo il valore corrente.

182
00:14:00,520 --> 00:14:01,300
Il cane può ottenere.

183
00:14:01,300 --> 00:14:05,200
Ne abbiamo già parlato durante le diapositive della lezione.

184
00:14:05,440 --> 00:14:10,020
Quando stavamo discutendo di incrementi non guidati, abbiamo considerato questo come una fonte.

185
00:14:10,060 --> 00:14:15,300
Quindi anche questo è molto simile a quello del tipo di incremento ottenuto.

186
00:14:15,310 --> 00:14:20,950
Quindi qui stiamo ottenendo l'attuale campo e una nuova carta che verrebbe catturata e catturata.

187
00:14:20,980 --> 00:14:22,120
Il mio prossimo ospite

188
00:14:22,240 --> 00:14:28,620
Il conteggio così corretto è il conteggio corrente del numero di partecipanti e non siamo qui l'utente è in

189
00:14:28,630 --> 00:14:29,970
Woking non presente.

190
00:14:30,010 --> 00:14:33,430
Quindi dobbiamo sottrarre il conteggio degli ospiti, ecco cosa stiamo facendo qui.

191
00:14:33,430 --> 00:14:39,010
Quindi questo sarebbe il nuovo conteggio e stiamo facendo il giro del problema sull'insieme di

192
00:14:39,010 --> 00:14:47,440
argomenti e stiamo superando sia il conteggio netto sia un nuovo conteggio e sappiamo che utilizza il confronto e quindi l'approccio per ottenere il valore.

193
00:14:47,440 --> 00:14:54,890
E sappiamo che è anche Lochley e si concentra sul valore corretto della chiamata.

194
00:14:55,160 --> 00:15:00,980
OK, ora abbiamo il metodo principale qui e stiamo istanziando l'evento meetup e lo

195
00:15:01,010 --> 00:15:08,720
chiamiamo semplicemente come Boston J. Y. gruppo di utenti o gruppi di utenti o gruppi di utenti molto popolari Gruppi Meetup in

196
00:15:08,720 --> 00:15:09,330
tutto il mondo.

197
00:15:09,500 --> 00:15:14,460
Quindi, quando sei malato, potresti avere un gruppo di utenti Jawahar e dovresti assolutamente aderire.

198
00:15:14,630 --> 00:15:21,110
Quindi questo è per Boston e stiamo chiamando questa variabile come Jack Boston J. UN. G. per il gruppo di

199
00:15:21,110 --> 00:15:26,060
utenti Java e stiamo creando tre tracce utente 1 utente e utente 3.

200
00:15:26,210 --> 00:15:28,940
E qui stiamo istanziando eseguibile.

201
00:15:29,000 --> 00:15:36,730
Quindi questo è il loro compito e qui stiamo vedendo questo particolare utente che sta per partecipare a Red 3 per indovinare per quale

202
00:15:36,730 --> 00:15:37,710
ragione siamo noi.

203
00:15:37,730 --> 00:15:40,060
Ma uno di loro è un utente stesso.

204
00:15:40,290 --> 00:15:45,780
E qui stiamo stampando il nome del thread e anche la fine dell'attuale kontrol.

205
00:15:45,800 --> 00:15:51,270
Quindi stiamo davvero lavorando per andare meglio e stiamo facendo la stessa cosa anche per gli

206
00:15:51,410 --> 00:15:57,310
utenti, ma qui inizialmente stiamo partecipando e fatto l'utente è stato qui a chiacchierare, quindi sta invocando

207
00:15:57,310 --> 00:16:05,180
il non frequentante e il superamento del valore 3 e infine il pensiero stava semplicemente partecipando a passare l'uno in modo da farlo

208
00:16:05,180 --> 00:16:07,620
nell'incremento e ottenere il metodo OK.

209
00:16:07,880 --> 00:16:11,180
Finisco per non frequentare quando abbiamo superato i 3.

210
00:16:11,180 --> 00:16:20,490
Sta per invocare questa logica qui per non sapere.

211
00:16:20,770 --> 00:16:27,150
E in questo caso quando siamo a Woking e stiamo passando W3, la parola in esso invocherà

212
00:16:27,320 --> 00:16:29,620
il metodo add e get giusto.

213
00:16:29,720 --> 00:16:31,600
Quindi per l'utente ne stiamo passando solo uno.

214
00:16:31,610 --> 00:16:32,510
In tal caso lo farebbe.

215
00:16:32,510 --> 00:16:35,240
Avrebbe invocato l'incremento di unguento.

216
00:16:35,660 --> 00:16:37,080
Quindi quelli sono i tre utenti.

217
00:16:37,220 --> 00:16:43,640
E poi li stiamo anche nominando e quindi stiamo avviando l'utente 1 e poi stiamo dormendo per un

218
00:16:44,000 --> 00:16:50,080
secondo, invocando l'inizio sull'utente a dormire in secondi e invocando l'utente al quarto addormentato per altri

219
00:16:50,070 --> 00:16:51,030
due secondi.

220
00:16:51,050 --> 00:16:53,600
E finalmente riceviamo l'ultima chiamata.

221
00:16:53,900 --> 00:16:57,020
Quindi lasciami andare avanti e gestirlo qui.

222
00:16:57,020 --> 00:17:04,370
Il metodo di sonno è qui e all'interno del metodo di sonno stiamo dormendo effettivamente e che può andare a dormire.

223
00:17:07,350 --> 00:17:08,950
Questo è l'output e abbiamo finito.

224
00:17:09,010 --> 00:17:14,930
Quindi inizialmente c'era un utente per l'organizzatore e poi un utente come penso per gli utenti.

225
00:17:14,950 --> 00:17:19,300
Quindi è diventato 5 quindi utente 2 o 3 quindi è diventato 8.

226
00:17:19,480 --> 00:17:22,770
Ma anche l'utente 2 sta andando in modo che non voglia partecipare.

227
00:17:22,810 --> 00:17:24,510
Quindi è tornato a combattere.

228
00:17:24,730 --> 00:17:31,150
OK, quindi ho fatto tre e poi c'è un 3 procurato e l'utente tre non sta indovinando ora, quindi

229
00:17:31,150 --> 00:17:32,670
stiamo aumentando di uno.

230
00:17:32,780 --> 00:17:34,980
OK, quindi la risposta finale è 6.

231
00:17:35,110 --> 00:17:36,100
Quindi questo è tutto.

232
00:17:36,100 --> 00:17:41,710
Quindi il numero atomico intero atomico è anche molto simile a quello e puoi anche controllare

233
00:17:41,710 --> 00:17:43,920
le altre classi e il pacchetto.

234
00:17:43,910 --> 00:17:46,840
Punto punto punto corrente corrente non atomico.

235
00:17:46,870 --> 00:17:51,530
Puoi anche decodificare le note supplementari e la discordia sarà disponibile anche nella sezione social.

236
00:17:51,790 --> 00:17:53,500
Grazie e buon codice.
