1
00:00:01,940 --> 00:00:05,480
Salve, questo è che non vogliono fare nell'ultima lezione.

2
00:00:05,530 --> 00:00:10,950
Abbiamo visto che non siamo riusciti a finire i thread degli indicizzatori che stavano aspettando blocchi intrinseci.

3
00:00:11,060 --> 00:00:16,250
Questo è un metodo che può ottenere metodi sincronizzati e rigore sincronizzato in questa lezione.

4
00:00:16,250 --> 00:00:22,160
Vedremo come risolverlo utilizzando i lock espliciti introdotti in Jollof.

5
00:00:22,580 --> 00:00:28,490
È un avanzato o grande in attesa di tali blocchi sono interrompibili.

6
00:00:28,690 --> 00:00:33,330
Iniziamo guardando un modo comune di utilizzare blocchi espliciti come la sincronizzazione.

7
00:00:33,340 --> 00:00:39,720
Vengono anche utilizzati per controllare l'accesso alle risorse condivise mordendo più minacce.

8
00:00:39,740 --> 00:00:46,310
Qui abbiamo l'interfaccia di blocco dal pacchetto Jawahar dot dot com corrent dot blots e re-entrant

9
00:00:46,310 --> 00:00:53,180
block è una classe dello stesso pacchetto che implementa l'interfaccia di blocco prossimo blocco è richiesto invocando

10
00:00:53,180 --> 00:00:55,340
il metodo di blocco.

11
00:00:55,490 --> 00:01:01,670
Poi abbiamo una sezione critica protetta dal blocco sotto la serratura di Varney e in un blocco

12
00:01:01,670 --> 00:01:09,530
definitivo invocando lo sblocco di Norf non documentato non viene fatto in un blocco finale, quindi il blocco non verrà mai

13
00:01:09,530 --> 00:01:10,170
rilasciato.

14
00:01:10,340 --> 00:01:16,640
Se un'eccezione viene lanciata nella sezione critica sarebbe pericoloso poiché potrebbero esserci altre minacce in

15
00:01:16,880 --> 00:01:19,060
attesa del rilascio del blocco.

16
00:01:19,130 --> 00:01:22,960
Quindi è fondamentale rilasciare il blocco in un blocco finale.

17
00:01:23,180 --> 00:01:24,580
Non metterlo in Glock.

18
00:01:24,700 --> 00:01:29,160
Vengono rilasciati automaticamente quando usciamo dagli orologi sincronizzati.

19
00:01:29,160 --> 00:01:35,850
Quindi dobbiamo stare attenti a non dimenticare lo sblocco quando si tratta di blocchi espliciti.

20
00:01:35,870 --> 00:01:42,110
E qui è l'interfaccia rock il metodo di blocco come abbiamo visto nella luce precedente viene utilizzato per l'acquisizione di un blocco di

21
00:01:43,070 --> 00:01:47,700
blocco interrompere il bleep è quello che abbiamo bisogno di risolvere il problema nel segmento precedente.

22
00:01:48,080 --> 00:01:54,860
E osservando una traccia acquisiremo il blocco a meno che la minaccia non venga interrotta o se quel blocco

23
00:01:54,860 --> 00:01:56,140
non sia disponibile.

24
00:01:57,210 --> 00:02:03,380
Fondamentalmente se una minaccia è in attesa di un lock richiamando questo metodo, può essere interrotta da un'altra

25
00:02:03,390 --> 00:02:05,810
minaccia richiamando il metodo di interrupt.

26
00:02:06,040 --> 00:02:11,050
L'anatra ha finito per far scattare un'eccezione sulle attuali minacce che lo stato interrotto viene cancellato.

27
00:02:12,070 --> 00:02:18,280
Non che questo annullamento interrotto l'eccezione di reimpostazione in protezione noi accadrà anche se finito che

28
00:02:18,280 --> 00:02:24,890
è già stato ingroup su questa minaccia e quindi successivamente questo metodo di blocco in che in modo

29
00:02:24,940 --> 00:02:27,860
ottimale è in più prossimo lotto descry.

30
00:02:27,880 --> 00:02:29,830
Terzo, qui c'è la serratura.

31
00:02:29,930 --> 00:02:37,400
Solo se è disponibile è disponibile il lock è piuttosto un nickel viene restituito altrimenti costringe un

32
00:02:37,550 --> 00:02:39,840
ritorno sul metodo restituisce immediatamente.

33
00:02:40,570 --> 00:02:45,510
Il prossimo è il tipo di nozione di blocco della cassa come si potrebbe aver intuito che il blocco è silenzioso.

34
00:02:45,640 --> 00:02:52,100
Se è gratuito ma poi restituito tutto sulla minaccia attuale non è stato interrotto.

35
00:02:52,450 --> 00:02:57,340
Quindi il tempo di attesa è specificato come il primo, ma io sono una sporcizia sull'unità del tempo di

36
00:02:57,340 --> 00:03:02,080
attesa come secondo parametro se il tempo di attesa trascorre e il blocco non può essere acquisito.

37
00:03:02,320 --> 00:03:09,490
Quindi questo metodo scritto fino a quel punto non desiderato è anche il turno se il blocco non è

38
00:03:09,620 --> 00:03:17,320
disponibile, e non è come bloccare il limite che questo metodo è anche sensibile all'interruzione. Il terzo è che, come sappiamo,

39
00:03:17,320 --> 00:03:18,830
è davvero un deadlock.

40
00:03:19,180 --> 00:03:25,990
Ora una cosa da notare è che esiste questo concetto di acquisizione chiamato costo di mantenimento artistico associato a

41
00:03:26,080 --> 00:03:31,670
ciascun blocco, indipendentemente dal fatto che il blocco sia un blocco esplicito intrinseco o rientrante.

42
00:03:32,050 --> 00:03:38,860
Se un terzo acquisisce un blocco invocando il metodo di blocco o inserendo un blocco sincronizzato, il vecchio codice

43
00:03:38,860 --> 00:03:43,160
verrà impostato su uno dello stesso thread che contiene il blocco.

44
00:03:43,190 --> 00:03:45,060
Nelle passeggiate questo metodo di blocco ancora una volta.

45
00:03:45,200 --> 00:03:50,900
O se entra e il metodo sincronizzato in caso di blocchi intrinseci allora l'intero conteggio

46
00:03:50,900 --> 00:03:52,810
sarebbe incrementato di 1.

47
00:03:52,810 --> 00:03:58,360
Allo stesso modo se quella rotta coinvolge il metodo di sblocco o esce dal blocco

48
00:03:58,360 --> 00:04:05,440
sincronizzato, allora il conteggio dell'arresto verrebbe decrementato di 1 e poi su tutto il paese solo la riga quindi la

49
00:04:05,440 --> 00:04:12,640
serratura sarebbe la logica di rientro di Tardis in atto a destra avendo un blocco non può inserire un blocco sincronizzato

50
00:04:12,640 --> 00:04:14,690
che utilizza lo stesso blocco.

51
00:04:14,690 --> 00:04:22,090
Infine invocando una nuova condizione sul builder di oggetti di blocco e un'istanza di condizione che è

52
00:04:22,090 --> 00:04:23,790
anche un'altra interfaccia.

53
00:04:23,810 --> 00:04:30,940
E cosa hai detto al dottor concorrente pacchetto di lock come il trattamento che un

54
00:04:30,940 --> 00:04:38,380
oggetto condizione consente a un thread di sospendere l'esecuzione fino a quando non viene notificato da un altro interprete,

55
00:04:38,380 --> 00:04:46,930
quindi una condizione è una sostituzione per metodi oggetto come Notifica notifica e che include metodi come 8 segnale e segnale

56
00:04:46,990 --> 00:04:47,460
attivo.

57
00:04:47,640 --> 00:04:48,600
OK.

58
00:04:48,700 --> 00:04:55,810
Più avanti nella demo vedremo come possiamo usare condition object, ma l'interfaccia di lock di implementazione di

59
00:04:55,990 --> 00:05:01,890
Cottle deve fornire semantica di visibilità della memoria sim come intrinseca a Oxx.

60
00:05:01,990 --> 00:05:09,280
Quindi questo è un requisito da quelle ossificazione nella falsa luce che abbiamo istanziato un blocco di rientro

61
00:05:09,660 --> 00:05:12,010
e ha questi due costruttori.

62
00:05:12,100 --> 00:05:15,200
Il secondo costruttore include un parametro booleano.

63
00:05:15,280 --> 00:05:17,760
Artificiale.

64
00:05:17,890 --> 00:05:20,320
E se passa, vuoi questo barometro?

65
00:05:20,320 --> 00:05:25,350
Significa che i dati ottengono l'accesso al lucchetto nell'ordine in cui lo hai richiesto.

66
00:05:27,010 --> 00:05:32,590
E se passiamo un falso, significa che le minacce potrebbero non avere accesso al blocco nell'ordine

67
00:05:32,650 --> 00:05:34,220
in cui hanno richiesto.

68
00:05:34,240 --> 00:05:40,480
Questo è se una minaccia richiede Similac e se in quell'istante di tempo è disponibile il blocco, il terzo ottiene

69
00:05:40,480 --> 00:05:41,350
il blocco.

70
00:05:41,440 --> 00:05:48,220
Anche se ci sono già altre minacce in attesa di quel blocco, molte rocce sono già state prese.

71
00:05:48,240 --> 00:05:54,150
Quindi la minaccia deve unirsi alla coda dietro altre minacce in attesa per impostazione predefinita e questa opzione

72
00:05:54,150 --> 00:05:55,220
è per noi.

73
00:05:55,230 --> 00:06:01,440
Quindi, nel primo costruttore che non ha alcun parametro equivale a invocare il secondo

74
00:06:01,440 --> 00:06:09,290
costruttore il cui falso dice che l'argomento non ha naturalmente un'opzione non corretta è l'opzione predefinita suona come

75
00:06:09,290 --> 00:06:10,670
non etica.

76
00:06:11,730 --> 00:06:18,030
Ma praticamente per le prestazioni presenta è perfettamente bene ottenere peso Lawks viene fornito

77
00:06:18,030 --> 00:06:21,790
con il sovraccarico di sospensione in ripresa.

78
00:06:21,900 --> 00:06:27,670
Questo è se è disponibile una richiesta di blocco e sblocco, quindi sospendere tale minaccia solo in modo

79
00:06:27,670 --> 00:06:32,760
che qualche altra gola a battuta ottenga quel blocco dopo la ripresa influisce sulle prestazioni.

80
00:06:33,500 --> 00:06:40,370
In pratica sembra che sia abbastanza buono fino a quando un thread di blocco ottiene il suo

81
00:06:40,370 --> 00:06:47,520
blocco in un determinato momento solo l'eccezione e l'opzione fairness potrebbero essere buone per un periodo relativamente

82
00:06:47,530 --> 00:06:48,370
lungo.

83
00:06:50,020 --> 00:06:57,520
Infine, sappi che anche le serrature intrinseche non producono alcun forno GALANTES, quindi l'ingiustizia sembra andare bene

84
00:06:57,520 --> 00:06:58,000
qui.

85
00:06:59,850 --> 00:07:06,030
Il prossimo è che legare per rispondere a questa domanda se preferiamo re-entrant o C-Class.

86
00:07:06,230 --> 00:07:10,580
Si raccomanda di usare intrinseche come sono familiari e ampiamente utilizzate.

87
00:07:12,140 --> 00:07:16,360
Anche i blocchi intrinseci vengono automaticamente rilasciati con blocchi espliciti.

88
00:07:16,390 --> 00:07:21,690
Potresti dimenticarti di rilasciare il lucchetto e ciò sarebbe pericoloso, nel senso che intendiamo come altre

89
00:07:21,810 --> 00:07:24,480
minacce lo leggono e che aspetteranno per sempre.

90
00:07:26,070 --> 00:07:32,090
Prestazioni successive perché i blocchi intrinseci sembrano quasi equivalenti ai blocchi rientranti.

91
00:07:33,500 --> 00:07:40,710
Tuttavia 5 blocchi di rientro delle prestazioni sono molto meglio dei blocchi intrinseci in Java 6.

92
00:07:40,730 --> 00:07:46,670
L'algoritmo per la gestione dei blocchi intrinseci è stato migliorato a causa del quale non c'è molta

93
00:07:46,670 --> 00:07:48,490
differenza tra i due.

94
00:07:48,490 --> 00:07:56,270
Ora qui sto solo specificando il Djala 6 ed è perché questo materiale deriva dal Java Concurrency in

95
00:07:56,270 --> 00:08:02,200
pratica e quel libro è stato rilasciato nel periodo che presumibilmente ha detto.

96
00:08:02,510 --> 00:08:10,540
Ecco perché specificherò il 6 luglio, ma sono sicuro che ciò valga anche per gli altri oceani di Java. Hanami puoi andare

97
00:08:10,540 --> 00:08:16,660
per il rientrante Glock's se hai bisogno di funzionalità aggiuntive come quella interruzione mentre scrivi Portlock perché

98
00:08:17,260 --> 00:08:24,450
quello che vedremo nel nostro anche la demo non è un blocco di rientranti più grande, proprio come nel caso

99
00:08:24,450 --> 00:08:25,960
dei blocchi intrinseci.

100
00:08:26,130 --> 00:08:33,120
Quello che otteniamo è un blocco di mutua esclusione standard che è solo un thread alla volta che riesce a tenere il

101
00:08:34,830 --> 00:08:40,950
blocco, ma questa strategia di blocco è un grosso problema quando consideriamo determinati scenari in cui è corretto che

102
00:08:40,950 --> 00:08:43,860
più thread mantengano il lotto allo stesso tempo.

103
00:08:45,460 --> 00:08:51,610
Ad esempio, possiamo avere una risorsa condivisa a cui è possibile accedere da più minacce di

104
00:08:51,610 --> 00:08:58,990
morte o da un singolo thread pilota, ma non mettere questo caso in cui più thread possono leggere contemporaneamente la

105
00:08:58,990 --> 00:09:02,860
strategia di blocco dell'esclusione reciproca del blocco rientrante non funzionerà.

106
00:09:03,310 --> 00:09:11,420
Quindi abbiamo bisogno di una concorrenza migliore qui e ciò può essere ottenuto tramite un blocco di scrittura in lettura, che è anche dalla figlia

107
00:09:11,640 --> 00:09:16,250
di Jawan e dal pacchetto Oxx della nipote per raggiungere i dati critici.

108
00:09:16,310 --> 00:09:20,450
Acquisirai innanzitutto il blocco di lettura richiamando il metodo di redraft.

109
00:09:20,450 --> 00:09:25,180
Analogamente per modificare i dati, si acquisirà il blocco corretto invocando il metodo giusto.

110
00:09:27,170 --> 00:09:31,930
La classe che implementa questa interfaccia è corretta e Krant legge il blocco di scrittura.

111
00:09:32,000 --> 00:09:34,540
Quindi dovresti creare un'istanza di questo blocco.

112
00:09:34,700 --> 00:09:41,020
OK, quindi il precedente senza serratura che abbiamo visto era solo un blocco rientrante e non era d'accordo e leggeva la legge

113
00:09:41,030 --> 00:09:41,710
sulla riscrittura.

114
00:09:42,110 --> 00:09:48,030
Penso che se sei interessato puoi leggere di più su di esso dagli strofinacci nelle specifiche

115
00:09:48,160 --> 00:09:48,920
del rapporto.

116
00:09:49,000 --> 00:09:51,850
Andiamo avanti e guardiamo a ciò che abbiamo imparato in azione.

117
00:09:54,050 --> 00:09:54,320
OK.

118
00:09:54,340 --> 00:09:57,560
Questa è una grande interruzione non definita ma incompleta.

119
00:09:57,670 --> 00:10:00,920
Quindi questa era una lezione che abbiamo visto nella demo precedente.

120
00:10:01,270 --> 00:10:07,860
OK, quindi abbiamo detto che una limitazione di questa particolare classe è se un thread è in attesa qui nell'indicizzatore

121
00:10:09,480 --> 00:10:12,990
se le minacce sono in attesa di un lock intrinseco.

122
00:10:13,290 --> 00:10:15,030
Quindi in quel caso non possiamo interrompere.

123
00:10:15,110 --> 00:10:15,330
Destra.

124
00:10:15,360 --> 00:10:18,360
Questa è stata la ragione per cui siamo in questa conferenza.

125
00:10:18,390 --> 00:10:20,050
Quindi stiamo guardando le serrature esplicite.

126
00:10:20,160 --> 00:10:25,900
Quindi quello che abbiamo fatto è che ho copiato questo codice in questa nuova classe chiamata blocchi espliciti.

127
00:10:25,950 --> 00:10:31,570
Interruzione perché abbiamo a che fare con blocchi espliciti Ho già esteso questa classe in una certa misura.

128
00:10:31,570 --> 00:10:34,760
Andi scriverà anche del codice per risolvere il problema.

129
00:10:34,980 --> 00:10:36,540
Quindi questa è la nuova classe.

130
00:10:36,620 --> 00:10:41,810
So che stiamo solo istanziando qui nella principale interruzione esplicita del fabbro.

131
00:10:42,150 --> 00:10:46,200
Quindi andiamo avanti e guardiamo alcune modifiche che sono già state fatte.

132
00:10:46,580 --> 00:10:52,360
Quindi qui nella testa di metafora di Nagumo, terzo, stiamo leggendo tutte le divagazioni.

133
00:10:52,560 --> 00:10:54,810
Quindi quello di cui abbiamo bisogno è una serratura.

134
00:10:54,840 --> 00:10:55,440
Destra.

135
00:10:55,470 --> 00:10:58,570
Quindi stiamo creando questa istanza di blocco qui.

136
00:10:58,810 --> 00:11:05,730
Blocco di rientro e se ricordi nella lezione ho detto che se invochiamo una nuova condizione, allora

137
00:11:05,730 --> 00:11:12,160
restituirei un oggetto condizione condizionale in modo che io lo chiami condizione di pesca.

138
00:11:12,360 --> 00:11:17,040
OK, quindi queste sono le cose che abbiamo che non sono nel costruttore.

139
00:11:17,060 --> 00:11:23,480
Prima stavamo passando solo bolle non blu che in realtà hanno superato il blocco su

140
00:11:23,660 --> 00:11:28,940
ogni condizione solo notando che questa condizione proviene effettivamente dai missili.

141
00:11:29,010 --> 00:11:34,130
OK, quindi usando l'oggetto serratura stiamo generando questa condizione di spiaggia OK secondo la legge.

142
00:11:34,230 --> 00:11:37,350
Guarda un po 'di più su questa condizione e su quella e anche di più.

143
00:11:37,440 --> 00:11:43,590
Quindi stiamo passando questi due nuovi oggetti bloccati a condizione che il downloader della scheda, così

144
00:11:44,730 --> 00:11:51,490
come in Nixa e il resto del cavo, siano esattamente gli stessi che stiamo nascondendo alle nostre minacce.

145
00:11:51,780 --> 00:11:52,560
Uno per.

146
00:11:52,580 --> 00:12:00,000
Non fidarti dell'altro per l'antrace e stiamo solo parlando qui e stiamo aspettando la scoperta in millisecondi.

147
00:12:00,000 --> 00:12:00,380
OK.

148
00:12:00,420 --> 00:12:02,500
Prima pensavo che fosse un secondo.

149
00:12:02,520 --> 00:12:06,210
Così l'ho fatto per trovare in millisecondi mezzo secondo.

150
00:12:06,580 --> 00:12:08,750
E stiamo anche facendo la stessa cosa

151
00:12:08,760 --> 00:12:14,470
Se il tempo è scaduto allora vogliamo interromperlo scaricando le tracce.

152
00:12:14,670 --> 00:12:15,080
Destra.

153
00:12:15,270 --> 00:12:18,120
Quindi stiamo usando questo metodo per l'interruzione.

154
00:12:18,120 --> 00:12:21,210
Stiamo solo invocando l'interrupt solo sugli indicizzatori.

155
00:12:21,230 --> 00:12:21,720
Destra.

156
00:12:21,930 --> 00:12:27,160
OK, quindi ripetiamo di ridurlo a mettere meno a rischio la minaccia.

157
00:12:27,390 --> 00:12:30,450
Ma stiamo invocando solo finito sull'indice.

158
00:12:30,490 --> 00:12:30,950
Destra.

159
00:12:31,060 --> 00:12:37,460
E che usando quell'interruzione stiamo andando indirettamente a cadere morto in pista.

160
00:12:37,530 --> 00:12:39,480
Quindi questo era tutto nella demo precedente.

161
00:12:41,040 --> 00:12:47,460
Ora qui nei constrictors Quindi, dal momento che stiamo passando Locke a condizione di pagina, quindi abbiamo bisogno di inizializzarli.

162
00:12:47,470 --> 00:12:52,850
Quindi abbiamo qui due variabili e le stiamo inizializzando sulla stessa cosa che accade qui anche nel

163
00:12:53,890 --> 00:12:54,720
thread dell'ordine.

164
00:12:54,730 --> 00:12:56,600
Quindi OK, è esattamente la stessa cosa.

165
00:12:56,690 --> 00:13:01,170
Condizione della pagina invocata qui nella parte in the constructor.

166
00:13:01,180 --> 00:13:04,030
Ora torniamo al thread dell'indicizzatore.

167
00:13:04,300 --> 00:13:09,740
Quindi, in precedenza, abbiamo solo vagato il modo in cui questo chiamato C sincronizzato.

168
00:13:10,030 --> 00:13:15,000
OK, quindi il blocco dell'occhio ha un singolo blocco su quello è il blocco intrinseco.

169
00:13:15,190 --> 00:13:20,380
Quindi ogni terzo che viene qui deve acquisire quel blocco per entrare nel blocco sincronizzato.

170
00:13:20,710 --> 00:13:24,900
E se la pagina di Decimo è uguale a nessuna, allora dobbiamo rinunciare alla serratura.

171
00:13:25,000 --> 00:13:30,940
OK, in questo modo si ottiene invocando il metodo sullo stesso oggetto di ribellamento perché

172
00:13:30,940 --> 00:13:33,000
dovremmo rilasciare lo stesso blocco.

173
00:13:33,160 --> 00:13:33,640
OK.

174
00:13:33,730 --> 00:13:40,270
E ciò sarebbe possibile solo se invochiamo il metodo del tasso su questo particolare oggetto che è

175
00:13:40,270 --> 00:13:43,650
l'oggetto che viene usato qui in questa incarnazione.

176
00:13:44,050 --> 00:13:45,460
OK, questa è una cosa.

177
00:13:45,670 --> 00:13:51,940
L'oggetto So Webling è la cosa comune tra sincronizzare un po 'qui o qui e non

178
00:13:51,940 --> 00:13:57,500
eccitante e liberare il marito come e il non fare il thread qui.

179
00:13:57,820 --> 00:13:59,850
Entra nel blocco sincronizzato.

180
00:13:59,980 --> 00:14:06,550
E anche per modificare Ed una volta che su Lurida una volta che il processo è completato anche qui stiamo

181
00:14:06,550 --> 00:14:07,270
usando no.

182
00:14:07,570 --> 00:14:13,320
Quindi, poiché questo è il blocco comune, dovremmo fare la stessa cosa per il blocco esplicito.

183
00:14:13,430 --> 00:14:13,770
OK.

184
00:14:13,870 --> 00:14:16,630
Quindi eravamo in strada e Dalek's in punto.

185
00:14:16,870 --> 00:14:21,950
Quindi dovremmo lavorare nel metodo ivied nella condizione.

186
00:14:22,340 --> 00:14:28,090
E la condizione è già generata dal blocco utilizzato invocando la nuova condizione e dobbiamo avviare

187
00:14:28,090 --> 00:14:32,330
la notifica che è un problema chiamato segnale e dobbiamo usarlo.

188
00:14:32,620 --> 00:14:37,510
Quindi deve essere legato allo stesso blocco, indipendentemente dal fatto che sia intrinsecamente attivo o che si

189
00:14:37,540 --> 00:14:39,210
tratti di blocco percentuale x.

190
00:14:39,220 --> 00:14:42,960
Quindi penso che sia abbastanza buono ora andiamo avanti e facciamo i cambiamenti che dobbiamo fare.

191
00:14:43,420 --> 00:14:45,760
Quindi andiamo avanti e cominciamo con l'indice proprio qui.

192
00:14:46,000 --> 00:14:48,010
Quindi non abbiamo più bisogno di sincronizzare.

193
00:14:48,150 --> 00:14:52,600
Quindi facciamo il dott. Chi.

194
00:14:52,690 --> 00:14:56,260
Quindi è comune che fuori e quello è.

195
00:14:56,290 --> 00:15:02,910
Quindi abbiamo già pronto il blocco in modo tale che prima lo svantaggio fosse che non eravamo in grado di

196
00:15:02,910 --> 00:15:05,270
interrompere questo particolare e risuonava qui.

197
00:15:05,450 --> 00:15:11,480
Diciamo il lucchetto ininterrottamente giusto perché si blocca rapidamente.

198
00:15:11,630 --> 00:15:14,870
Questo è ciò che ci aiuterà ad avvolgere questa tendenza.

199
00:15:15,180 --> 00:15:23,150
Ora mettiamola finalmente qui perché la cosa più importante è sbloccarla.

200
00:15:23,180 --> 00:15:23,600
Destra.

201
00:15:23,630 --> 00:15:31,090
Se non stai sbloccando, sarà pericoloso perché altre minacce fatte per questo ti aspetteranno

202
00:15:31,090 --> 00:15:32,200
per sempre.

203
00:15:32,540 --> 00:15:35,240
Beh, immagino, ecco una cosa in modo che possano scendere.

204
00:15:35,530 --> 00:15:47,740
Ora qui lasciatemi commentare questo e diamo un'occhiata alla condizione che una nazione è stata nominata condizione di aspirati.

205
00:15:47,830 --> 00:15:55,570
La variabile che abbiamo usato lì per vedere un modo di suggerire la materia di peso è sostituita con una

206
00:15:55,570 --> 00:15:59,030
velocità che stiamo facendo in condizioni di base.

207
00:15:59,320 --> 00:16:00,690
Quindi è quello che dobbiamo fare.

208
00:16:00,730 --> 00:16:02,460
Quindi molto semplice.

209
00:16:02,680 --> 00:16:09,630
Ora un'altra cosa che devi fare qui è che viene generata un'eccezione ininterrotta perché diciamo che

210
00:16:09,640 --> 00:16:14,460
un terzo sta leggendo qui se Greenwell è il metodo dell'interrupt.

211
00:16:14,470 --> 00:16:19,980
Quindi genererebbe un interrupt o un'eccezione nel qual caso la minaccia non è come il blocco.

212
00:16:20,140 --> 00:16:27,340
OK, quindi se invochi lo sblocco in quel caso, vogliamo ottenere un'eccezione di monitoraggio illegale della scheda di eccezione.

213
00:16:27,340 --> 00:16:30,070
È bello sentire che penso che non lo mostri qui.

214
00:16:30,220 --> 00:16:32,020
Quindi l'eccezione arretrata sarebbe genitor.

215
00:16:32,020 --> 00:16:38,410
Quindi, in questo caso, faresti solo se tu come se sei in possesso del gate di blocco, ma un trigger diverso genera un'eccezione

216
00:16:38,420 --> 00:16:41,610
rispetto a te vuol dire che non hai il blocco.

217
00:16:41,920 --> 00:16:47,370
OK, quindi dobbiamo fare una cosa che dobbiamo fare come se fosse generata una sezione interpretata.

218
00:16:47,560 --> 00:16:54,900
Se ricordi cosa sta accadendo, lo stato interrotto viene cancellato, il che significa che è fatto per noi.

219
00:16:54,910 --> 00:16:57,850
Quindi, quello che dobbiamo fare è che dobbiamo farlo ancora una volta.

220
00:16:58,030 --> 00:17:01,000
E se questo è vero, non è necessario sbloccarlo.

221
00:17:01,300 --> 00:17:01,540
Destra.

222
00:17:01,540 --> 00:17:02,960
Perché non c'è il blocco.

223
00:17:03,280 --> 00:17:09,260
Quindi dobbiamo accertarci che il perseguimento di regole rigide

224
00:17:09,750 --> 00:17:17,300
e il modo in cui lo faremo invocando nuovamente l'intero metodo OK.

225
00:17:17,320 --> 00:17:17,630
Così.

226
00:17:17,740 --> 00:17:21,720
Quindi se stai venendo qui significa che è stato interrotto in un'interruzione.

227
00:17:22,060 --> 00:17:25,220
Ma poi lo stato fa è anche resettato.

228
00:17:25,240 --> 00:17:26,830
Quindi è necessario impostarlo di nuovo.

229
00:17:26,980 --> 00:17:32,020
E se lo ha detto di nuovo nel blocco finale, come questa commissione

230
00:17:35,950 --> 00:17:39,140
viene interrotta sarà vero per questo gruppo.

231
00:17:39,160 --> 00:17:42,910
Significa che non dovremmo invocare questo metodo solo se è falso.

232
00:17:42,910 --> 00:17:44,230
Eravamo in agosto.

233
00:17:44,470 --> 00:17:48,980
Se è falso significa che l'esecutore della sezione critica ha avuto successo.

234
00:17:48,980 --> 00:17:53,000
E così abbiamo il lucchetto e dovremmo sbloccarlo.

235
00:17:53,020 --> 00:17:55,610
Quindi questa è una cosa che dobbiamo fare qui.

236
00:17:55,630 --> 00:17:56,820
Quindi questo è tutto.

237
00:17:56,840 --> 00:18:00,720
E ora andiamo al commercio di droga in questo ordine.

238
00:18:00,760 --> 00:18:01,690
Inoltre abbiamo

239
00:18:05,710 --> 00:18:08,010
questo OK così sincronizzato è chiuso.

240
00:18:08,500 --> 00:18:11,500
Ora la dichiarazione di blocco può essere qui.

241
00:18:11,500 --> 00:18:16,660
Non è necessario che ci sia all'interno del blocco try nell'altro terzo che abbiamo

242
00:18:16,660 --> 00:18:22,140
nel blog perché ci eravamo o stavamo invocando un metodo interrompibile che potrebbe generare un'eccezione.

243
00:18:22,190 --> 00:18:23,540
Quindi qui non ne abbiamo bisogno.

244
00:18:23,570 --> 00:18:32,290
Quindi possiamo solo seguire questo metodo di blocco se non facciamo come avvolgere questo.

245
00:18:32,320 --> 00:18:38,620
Quindi questo è il thread in background e lo stiamo usando in modo indiretto per chiudere o interrompere questo thread

246
00:18:38,620 --> 00:18:39,790
chiudendo il flusso.

247
00:18:39,790 --> 00:18:43,360
Quindi, ecco un link web quindi non abbiamo più bisogno di questo.

248
00:18:47,150 --> 00:18:48,150
Accesso OK.

249
00:18:48,240 --> 00:18:52,980
Quindi questo è il metodo che invocheremo presto, in modo da renderlo un segnale.

250
00:18:53,310 --> 00:18:53,660
OK.

251
00:18:53,670 --> 00:18:56,550
Quindi questo è tutto quello che c'è qui.

252
00:18:56,790 --> 00:18:59,010
Ora quello è interrompibile.

253
00:18:59,010 --> 00:19:02,170
Quindi andiamo avanti e gestiamo questo.

254
00:19:02,230 --> 00:19:03,590
Quindi è fatto qui.

255
00:19:04,940 --> 00:19:06,930
Allora eccoci qua.

256
00:19:06,940 --> 00:19:10,180
Le minacce del downloader sono state e stanno cercando di scaricare.

257
00:19:10,250 --> 00:19:14,250
Nel frattempo da quando abbiamo iniziato solo per mezzo secondo il tempo è scaduto.

258
00:19:14,310 --> 00:19:18,040
Quindi abbiamo bisogno di ciò che abbiamo bisogno per fermare le minacce.

259
00:19:18,170 --> 00:19:22,700
Quindi qui stiamo dicendo che il Donard è una minaccia per l'idea di quelli ed è ancora attivo.

260
00:19:22,730 --> 00:19:24,090
Quindi lo stiamo fermando.

261
00:19:24,090 --> 00:19:28,900
E il bambino sta ancora cadendo, mentre siamo a Woking nella drammaturgia sulla pista degli indicizzatori.

262
00:19:29,140 --> 00:19:29,380
OK.

263
00:19:29,390 --> 00:19:35,180
E questo sta per lanciare un annuncio che genererà un'eccezione

264
00:19:35,180 --> 00:19:42,610
un'eccezione perché stiamo aspettando qui perché stiamo aspettando qui sull'orologio e viene generata un'eccezione.

265
00:19:42,700 --> 00:19:48,580
E così veniamo qui e per prima cosa interrompiamo il download o il terzo in modo indiretto

266
00:19:48,940 --> 00:19:54,910
impostando lo stato gobstopper qui sul thread in background che stiamo generando nel download o che chiuderà il

267
00:19:54,910 --> 00:19:55,520
flusso.

268
00:19:55,570 --> 00:20:00,340
Questo potrebbe far scattare il telefono o provare a proiettare quello che abbiamo visto nell'ultimo giorno e questo

269
00:20:00,760 --> 00:20:04,380
è il più che abbiamo appena sentito e lo stiamo solo sbloccando.

270
00:20:04,540 --> 00:20:09,110
Ecco cosa sta succedendo qui e stiamo facendo la stessa cosa anche per il 2001 2002.

271
00:20:09,130 --> 00:20:17,790
Sono anche interrotti e qui per il 2003 è stato interrotto, ma il processo di download continua e

272
00:20:17,780 --> 00:20:19,120
ha completato.

273
00:20:19,260 --> 00:20:19,820
Va bene.

274
00:20:19,940 --> 00:20:25,480
Quindi in quel caso quando stavamo cercando di interromperlo nello stesso momento in cui il Donard è

275
00:20:25,510 --> 00:20:26,830
completo ma va bene.

276
00:20:26,830 --> 00:20:30,450
Quindi qui chiaramente dice che stiamo chiudendo il flusso.

277
00:20:30,500 --> 00:20:33,530
Quindi nel campo del clean up stiamo invocando la seconda tappa qui.

278
00:20:33,670 --> 00:20:38,040
Facendolo, chiudiamo il flusso nel thread in background nel thread del downloader.

279
00:20:38,050 --> 00:20:44,260
Ok, quindi stiamo attraversando il flusso e per questo qui stiamo dicendo che non può essere scaricato perché lo

280
00:20:44,290 --> 00:20:45,700
stream è stato chiuso.

281
00:20:46,030 --> 00:20:49,640
E la stessa cosa sta succedendo anche per le divagazioni sul web.

282
00:20:49,720 --> 00:20:51,100
2001 e 2002.

283
00:20:51,370 --> 00:20:55,840
Ecco come viene fatto in modo esplicito Rops sta aiutando l'interruzione di Lustral.

284
00:20:55,900 --> 00:21:02,380
Ora l'unica cosa che voglio dire è quando stiamo invocando il tocco sincronizzato.

285
00:21:02,530 --> 00:21:06,810
Quindi, fondamentalmente tu sei dentro per questo intrinseco Lockerby proprio come uno.

286
00:21:06,820 --> 00:21:11,730
D E tutte le minacce che stanno cercando di entrare in questo blocco ci aspetteranno.

287
00:21:11,750 --> 00:21:18,000
In coda ma con blocchi espliciti, quindi stiamo generando la condizione richiamando la nuova condizione.

288
00:21:18,170 --> 00:21:21,450
E in sostanza possiamo avere più di una condizione.

289
00:21:21,670 --> 00:21:27,990
Quindi, ciò significa che se abbiamo più di una condizione, ciascuna condizione corrisponderebbe a una.

290
00:21:28,010 --> 00:21:32,110
Q Il che significa che più tracce possono essere in attesa in quegli anni.

291
00:21:32,260 --> 00:21:34,090
Quindi non deve essere solo uno.

292
00:21:34,090 --> 00:21:39,400
Q Come nel caso del blocco intrinseco, ma può essere costituito da più segnali e dati

293
00:21:39,400 --> 00:21:46,900
consente di passare semplicemente al documento API dell'interfaccia Condition Clock in pochi secondi fa ho menzionato che è un cristallo diretto immettere

294
00:21:46,900 --> 00:21:52,360
un blocco sincronizzato e se il blocco è non disponibile allora sarà fantastico nella coda corrispondente

295
00:21:52,360 --> 00:21:53,570
al blocco intrinseco.

296
00:21:53,800 --> 00:21:57,090
Quindi nel nostro caso abbiamo Hauert sincronizzato con il balbettio.

297
00:21:57,160 --> 00:22:01,040
Quindi il lampeggio è un oggetto e ha un blocco intrinseco che è associato al suo.

298
00:22:01,050 --> 00:22:05,980
Dunque è giusto, ma il fatto che tu avessi pensato che io volessi differire era un altro.

299
00:22:05,980 --> 00:22:08,630
Q Quindi è stato un errore per mia zia.

300
00:22:08,800 --> 00:22:14,250
Fondamentalmente l'oggetto bubbling ha anche il metodo del peso che inibisce dalla classe dell'oggetto.

301
00:22:14,320 --> 00:22:17,520
Proprio sotto trattamento che è anche associato a questo.

302
00:22:17,520 --> 00:22:19,870
Q E questo è chiamato come condizione.

303
00:22:19,870 --> 00:22:26,130
D Perché un testo dovrebbe entrare in quella particolare vista a causa del fatto che alcune condizioni sono vere.

304
00:22:26,140 --> 00:22:30,670
Quindi nel nostro caso la condizione è vitale Cecenia m. p. h. è uguale o no.

305
00:22:30,910 --> 00:22:38,140
Quindi in quella situazione l'indice lo diceva e poi sarebbe andato benissimo e grande nella condizione

306
00:22:38,140 --> 00:22:38,980
corrispondente.

307
00:22:39,370 --> 00:22:42,600
Quindi, perché la pagina non è ancora stata scaricata e non può indicizzarla.

308
00:22:42,850 --> 00:22:49,050
Quindi la condizione aveva le pagine di Steimle che chiamava null. Ci si chiama in buone condizioni sotto di te in

309
00:22:49,060 --> 00:22:50,020
cui si classifica.

310
00:22:50,020 --> 00:22:56,260
Il terzo rating è chiamato come condizione Q e A Different That to in non sarà limitato per far

311
00:22:56,260 --> 00:22:59,560
sì che questa setta si svegli in un blocco silenzioso.

312
00:22:59,770 --> 00:23:01,340
E le sue azioni successive.

313
00:23:01,630 --> 00:23:03,880
OK, quindi abbiamo avuto una sola condizione.

314
00:23:03,880 --> 00:23:06,730
Q Sono una singola condizione piuttosto buona.

315
00:23:06,730 --> 00:23:12,020
Ora qui diamo un'occhiata a un esempio qui e questo è dove abbiamo molte condizioni piuttosto buone.

316
00:23:12,050 --> 00:23:14,220
Oggetti di condizione non magici.

317
00:23:14,740 --> 00:23:16,430
Quindi qui è un legame Moher.

318
00:23:16,510 --> 00:23:21,490
Quindi è il quartiere di Miskin con elementi della trama ma è legato, il che significa che non possiamo

319
00:23:22,150 --> 00:23:27,040
avere più non possiamo aggiungere più elementi della palla specificata che è 100 e questo è e dobbiamo

320
00:23:27,040 --> 00:23:31,020
montare questo libro su Big metti tutto questo inserendo elementi come per rimuovere elementi.

321
00:23:31,270 --> 00:23:34,520
E qui ci sono due condizioni piuttosto buone.

322
00:23:34,570 --> 00:23:36,180
Quindi è un trucco giusto.

323
00:23:36,190 --> 00:23:37,860
Chi vuole aggiungere un elemento.

324
00:23:37,870 --> 00:23:39,330
Quindi entra in questa faccenda.

325
00:23:39,610 --> 00:23:43,960
E se vede questa condizione dove dice che ma il buffer è pieno.

326
00:23:43,960 --> 00:23:45,480
Nel qual caso non può.

327
00:23:45,550 --> 00:23:48,350
Deve attendere che sia disponibile spazio.

328
00:23:48,520 --> 00:23:49,290
Quindi c'è.

329
00:23:49,300 --> 00:23:50,820
Quindi questo è abbastanza buono.

330
00:23:50,830 --> 00:23:54,940
E c'è un oggetto condizione corrispondente ad aggiungere qui.

331
00:23:55,260 --> 00:23:59,640
È nella condizione Q corrispondente a questa particolare condizione.

332
00:24:00,010 --> 00:24:04,440
Quando Access ho letto la stessa cosa succede qui è il terzo e durante il trattamento che.

333
00:24:04,470 --> 00:24:06,840
E se trova che il buffer è vuoto.

334
00:24:06,910 --> 00:24:09,770
In quel caso entrerebbe nella condizione.

335
00:24:09,790 --> 00:24:16,370
Un oggetto condizione diverso su entrambi gli oggetti condizione sono generati dallo stesso blocco.

336
00:24:16,420 --> 00:24:21,210
Quindi questo è quello che abbiamo qui e se un thread sta leggendo qui OK.

337
00:24:21,220 --> 00:24:23,320
Perché il buffer è vuoto.

338
00:24:23,320 --> 00:24:30,310
Ora qui è se un altro thread è in grado di aggiungere un elemento, allora sarà nel caso del

339
00:24:30,640 --> 00:24:36,520
segnale che costituirà questa particolare minaccia e possiamo anche avere predicati multi-condizione multipla ma una singola

340
00:24:36,520 --> 00:24:38,690
condizione che sia anche possibile.

341
00:24:38,700 --> 00:24:45,150
Ora lo svantaggio con questo tipo di configurazione è che a causa di un ordine ingiusto c'è la

342
00:24:45,160 --> 00:24:50,810
possibilità che possiamo fare come si scommette su più predicati di condizione allo stesso tempo.

343
00:24:50,960 --> 00:24:58,410
D E se invochiamo e notifichiamo tutto il nostro segnale, allora una delle minacce verrà riattivata e acquisirà

344
00:24:58,410 --> 00:25:02,650
la condizione di blocco piuttosto che potrebbe non essere dura.

345
00:25:02,670 --> 00:25:03,590
Deve essere tutto vero

346
00:25:03,590 --> 00:25:05,970
E così potrebbe tornare ancora una volta ogni giorno.

347
00:25:06,210 --> 00:25:08,120
OK, questo è lo svantaggio.

348
00:25:08,160 --> 00:25:08,500
OK.

349
00:25:08,520 --> 00:25:14,590
Ma qui stiamo lavorando su valutazioni di minacce legali piuttosto che su una particolare condizione.

350
00:25:14,610 --> 00:25:22,170
Quindi, questa condizione sarà abbastanza buona e può fare altre azioni e altre azioni successive.

351
00:25:22,170 --> 00:25:25,470
Quindi invocheremo il rischio del giusto tipo di minaccia.

352
00:25:25,500 --> 00:25:26,580
Quindi questo è un vantaggio.

353
00:25:26,610 --> 00:25:31,000
E il secondo vantaggio è che possiamo invocare solo il metodo del segnale piuttosto che il segnale attivo.

354
00:25:31,320 --> 00:25:35,430
Se noi abbiamo un oggetto condizione associato a ciascuna condizione piuttosto bene.

355
00:25:35,640 --> 00:25:40,360
Quindi possiamo lavorare sul segnale e cantare e il segnale è lì per essere più efficiente.

356
00:25:40,740 --> 00:25:41,410
Quindi questo è tutto.

357
00:25:41,400 --> 00:25:44,770
Quindi mi chiedo solo che puoi anche leggerli qui.

358
00:25:45,030 --> 00:25:50,990
I blocchi così raffinati sono funzionalità più avanzate e in un modo che abbiamo visto è utile che

359
00:25:51,120 --> 00:25:56,180
in interrupt se vogliamo interrompere un thread in attesa su un orologio, allora è possibile.

360
00:25:56,400 --> 00:25:57,350
Quindi questo è tutto.

361
00:25:57,510 --> 00:25:58,160
Grazie.

362
00:25:58,260 --> 00:25:59,140
Buona programmazione.
