1
00:00:02,360 --> 00:00:04,400
Hardware Questo è di mentalità ristretta.

2
00:00:04,670 --> 00:00:12,190
Iniziamo con il quadro esecutivo quello che abbiamo visto finora è che il nostro approccio al compito è

3
00:00:12,190 --> 00:00:17,790
un compito creato e assegnato a una qualifica di minaccia appena creata.

4
00:00:17,830 --> 00:00:23,170
Che arte raffinata e un nuovo approccio in cui un compito è definito come parte del Turnage.

5
00:00:23,640 --> 00:00:28,580
Quindi c'è una stretta connessione tra il contenuto dell'attività che è per ogni nuova attività.

6
00:00:28,650 --> 00:00:30,020
Abbiamo una nuova discussione.

7
00:00:31,310 --> 00:00:34,260
E questo funziona solo per applicazioni su piccola scala.

8
00:00:35,160 --> 00:00:41,070
Ma ha delle limitazioni quando viene utilizzato in applicazioni su larga scala in cui grandi numeri che possono essere creati

9
00:00:42,860 --> 00:00:46,730
con una limitazione è la creazione di camion e il commercio dei costi.

10
00:00:46,910 --> 00:00:54,040
Se può esserci un gran numero di Krach, allora crea thread in Kansi quantità significative di risorse.

11
00:00:54,110 --> 00:01:01,570
Questo costo è stato rilasciato anche su Blackhorse in base al numero elevato di thread eseguibili che possono essere utilizzati se

12
00:01:02,930 --> 00:01:07,760
la memoria e altre limitazioni del task cribber sono l'instabilità di un'applicazione.

13
00:01:08,090 --> 00:01:14,800
E questo è dovuto alla mancanza di un limite sul numero di minacce che possono essere create su una data piattaforma.

14
00:01:14,820 --> 00:01:20,130
Ci sarebbe una soglia sul numero di parole che possono essere create e se questa soglia viene raggiunta

15
00:01:20,360 --> 00:01:26,740
molto probabilmente si verificherà un errore di memoria insufficiente, quindi la creazione di un numero elevato di thread non solo consumerà

16
00:01:26,740 --> 00:01:29,790
molta memoria ma può anche portare alla nostra memoria.

17
00:01:31,620 --> 00:01:36,870
Quindi la soluzione per questa limitazione è il quadro esecutivo, ma è anche raccomandato da

18
00:01:36,870 --> 00:01:39,930
questo effetto di Daleiden sotto vestita per l'esecutore.

19
00:01:39,990 --> 00:01:43,380
Ho chiesto a Ruperts di utilizzare questo framework.

20
00:01:43,490 --> 00:01:49,280
Non affronteremo direttamente le minacce che gestiscono intrinsecamente il quadro esecutivo.

21
00:01:50,990 --> 00:01:55,810
Il framework degli espositori è essenzialmente un compito molto flessibile e potente.

22
00:01:55,850 --> 00:02:06,200
Il framework di esecuzione sotto esso consiste in un libro che tu e Turkel siete essenzialmente una coda che contiene tutte

23
00:02:06,260 --> 00:02:09,720
le attività che devono essere eseguite.

24
00:02:09,720 --> 00:02:14,280
Trackball è semplicemente un pool di thread che esegue l'attività nel libro.

25
00:02:14,280 --> 00:02:22,670
In questa illustrazione il simbolo è rappresentato da minaccia under-class del noise book che implementa

26
00:02:22,670 --> 00:02:24,250
l'interfaccia Runnable.

27
00:02:24,650 --> 00:02:29,570
In effetti più avanti vedremo anche un altro tipo di basco chiamato Carloman.

28
00:02:29,620 --> 00:02:33,430
In questo contesto, quindi, rende l'attività successiva dalla coda.

29
00:02:33,530 --> 00:02:38,340
Lo esegue e torna alla piscina in attesa di un'altra operazione.

30
00:02:38,580 --> 00:02:43,980
Quindi thread non viene terminato non appena termina l'esecuzione proprio come nel caso.

31
00:02:43,990 --> 00:02:46,950
Off-track per approccio al compito.

32
00:02:46,950 --> 00:02:52,050
Tornerà alla piscina in modo che possa essere riutilizzata più e più volte per nuovi test.

33
00:02:53,080 --> 00:02:58,400
E queste virgolette dirette possono essere di tipi diversi e puoi specificare quale tipo

34
00:02:58,400 --> 00:03:05,430
di lavoro vorresti creare ricerche UNbacked come il numero di thread del thread su come e quanto a lungo

35
00:03:05,520 --> 00:03:07,140
saranno i thread.

36
00:03:07,290 --> 00:03:10,280
E questa è essenzialmente la gestione del tempo.

37
00:03:10,650 --> 00:03:16,050
Quindi possiamo specificare il tipo di minaccia che vorremmo su come nella nostra applicazione

38
00:03:16,050 --> 00:03:19,730
e vorremmo presto vedere le tartarughe comunemente usate.

39
00:03:19,760 --> 00:03:25,040
Quindi la prossima domanda è come fa l'uscita del framework di Cukor ad affrontare le limitazioni

40
00:03:25,040 --> 00:03:30,790
dell'approccio basco alla parte basca così come non è stato appena menzionato una volta creato il pool di rischio.

41
00:03:30,920 --> 00:03:37,610
Ha un numero fisso di minacce e possono essere prontamente utilizzate senza dover creare un nuovo thread per

42
00:03:37,820 --> 00:03:44,230
ogni nuova attività che verrà eseguita sulla creazione della tassa di vendita sui costi di Didon.

43
00:03:44,360 --> 00:03:50,540
Pertanto, un task verrà eseguito immediatamente senza dover attendere una minaccia appena creata in modo

44
00:03:50,530 --> 00:03:58,490
che ciascuno di essi esegua una migliore reattività poiché possiamo avere un limite superiore al numero di minacce a cui

45
00:03:58,580 --> 00:04:02,320
un tecnico affronta anche le altre due limitazioni.

46
00:04:02,370 --> 00:04:05,030
La terza limitazione riguardava l'instabilità.

47
00:04:05,040 --> 00:04:11,000
Potremmo finire con un errore di memoria on-off quando non ci sono vincoli sul numero di testo da creare.

48
00:04:12,720 --> 00:04:16,290
Ora vediamo come viene rappresentato il quadro esecutivo.

49
00:04:16,350 --> 00:04:18,710
Più tardi faremo anche un brevissimo termine.

50
00:04:19,220 --> 00:04:24,270
C'è questa interfaccia chiamata executor che le persone che eseguono il framework di esecuzione.

51
00:04:24,530 --> 00:04:30,640
E ha un metodo di esecuzione che prende un eseguibile come è stato passato o qualcosa si è verificato qui.

52
00:04:30,730 --> 00:04:39,730
Questo metodo mostra a Tibet come è possibile implementarlo da task executer come si può vedere implementa l'interfaccia

53
00:04:39,730 --> 00:04:45,440
executor e il metodo di esecuzione in folle è lo spon.

54
00:04:45,490 --> 00:04:46,920
Ogni nuovo compito.

55
00:04:47,350 --> 00:04:53,080
Quindi questo è il trucco per l'esecuzione del compito su questo è come dovrebbe apparire il codice del client.

56
00:04:53,520 --> 00:05:01,240
Come possiamo vedere, ma iniziare a essere inviati con lo stesso executer qui è come si creerebbe un singolo

57
00:05:01,240 --> 00:05:02,890
esecutore di thread.

58
00:05:03,100 --> 00:05:07,000
Questo è un nuovo thread non creato per il dato a noi.

59
00:05:07,000 --> 00:05:14,230
Stiamo invocando direttamente l'argomento di esecuzione su quell'istanza eseguibile, quindi qui ogni attività viene eseguita in sequenza

60
00:05:14,530 --> 00:05:17,120
come parte della strategia di colore.

61
00:05:17,590 --> 00:05:22,530
Quindi quello che stiamo vedendo qui è un diverso tipo di esecutore rispetto a quello che abbiamo visto nella diapositiva precedente

62
00:05:22,540 --> 00:05:23,660
con la terza attività.

63
00:05:23,680 --> 00:05:25,970
Esecutore.

64
00:05:26,100 --> 00:05:32,290
Quindi, essenzialmente con questo tipo di framework, potremmo disaccoppiare l'invio passato dall'attuale processo

65
00:05:32,340 --> 00:05:34,380
di esecuzione passato.

66
00:05:34,410 --> 00:05:41,540
Ciò significa che un processo di esecuzione delle attività può essere personalizzato come parte di ciò che deve ottenere gli altri tipi di esecutori in

67
00:05:43,250 --> 00:05:48,360
modo che questa classica uscita si verifichi dall'articolo Jacquard del pacchetto o dalla conquista del bianco pro.

68
00:05:48,380 --> 00:05:56,920
La maggior parte degli esecutori che avremo mai bisogno del tema degli Stati Uniti i metodi qui sono alcuni dei che sto abbaiando pazzo.

69
00:05:56,930 --> 00:06:04,200
Questo è il nuovo pool di thread fissi new cast pool new single thread esegui un nuovo Should your will.

70
00:06:04,780 --> 00:06:09,610
Quindi questi metodi hanno scritto l'esecutore ma alcune proprietà associate ad essi.

71
00:06:11,400 --> 00:06:17,560
All'uscita è stato scritto dai metodi ostili implementati nel primo servizio executor che estende

72
00:06:17,740 --> 00:06:22,760
l'interfaccia executor ed è davvero molto esteso come vedremo in seguito.

73
00:06:23,110 --> 00:06:28,400
Quindi il tipo di ritorno di questi tre metodi è un servizio executor.

74
00:06:28,460 --> 00:06:35,070
L'ultimo metodo legge un esecutore che implementa se il tuo servizio esecutore esiste.

75
00:06:35,080 --> 00:06:43,320
Exec o servizio non di quell'esecutore Stewart e con questi metodi sono esempi di una classe chiamata Tech che

76
00:06:43,380 --> 00:06:45,580
executer ottiene direttamente dal pacchetto.

77
00:06:45,630 --> 00:06:53,710
Voglio parlare di conking all'ultimo minuto che restituisce effettivamente un'istanza di una sottoclasse di questa classe.

78
00:06:53,880 --> 00:07:02,040
Esecutore e questa classe estende il servizio di astrattore astratto che è un'implementazione scheletrica di executer

79
00:07:02,040 --> 00:07:04,930
così viene specificata in precedenza.

80
00:07:05,090 --> 00:07:11,190
Possono utilizzare uno di questi metodi, in quanto gli esecutori restituiscono l'indirizzo degli scenari di utilizzo più comuni.

81
00:07:11,550 --> 00:07:16,700
E se hai bisogno di un executer più personalizzato, puoi utilizzarlo direttamente quando guardi la classe.

82
00:07:17,050 --> 00:07:20,580
E puoi ottenere maggiori informazioni su questo leggendolo un po '.

83
00:07:22,540 --> 00:07:27,460
Iniziamo ad esaminare brevemente gli attributi degli esecutori che sono scritti con i metodi e la

84
00:07:27,460 --> 00:07:28,440
notte precedente.

85
00:07:28,640 --> 00:07:36,260
E iniziamo con il nuovo trackwork fisso, dato che i nomi sono solo questo metodo che lo crea in modo

86
00:07:36,380 --> 00:07:41,690
da impostare tutte le dimensioni specificate dal parametro di input e dal trucco.

87
00:07:41,830 --> 00:07:47,900
Quindi la trackball avrà un massimo di antrace che sarà acto.

88
00:07:48,090 --> 00:07:54,870
E il modo in cui funziona è che inizialmente non ci saranno tracce ma verrà chiesto come verrà creata la

89
00:07:54,870 --> 00:08:02,700
mia nuova struttura morta per garantire che continui su quelle dimensioni di pool raggiunte non se le dimensioni del pool non sono ancora state

90
00:08:02,700 --> 00:08:09,090
raggiunte e se c'è una nuova attività viene creato un nuovo thread per eseguire l'attività anche se è presente

91
00:08:09,090 --> 00:08:10,220
una minaccia inattiva.

92
00:08:11,790 --> 00:08:18,330
Tuttavia, una volta raggiunta la dimensione del pool, non vengono create nuove minacce per qualsiasi nuova attività o viene utilizzata

93
00:08:18,330 --> 00:08:23,220
una minaccia inattiva o l'attività viene protetta fino a quando un thread diventa inattivo.

94
00:08:23,250 --> 00:08:32,270
Quindi in qualsiasi momento la maggior parte dei partecipanti lavorerà attivamente a noi e questo o un thread esistente

95
00:08:32,270 --> 00:08:33,230
muore.

96
00:08:33,380 --> 00:08:40,470
Eccezione e se si ha a che fare con un server di produzione pesantemente caricato, questo è il metodo che

97
00:08:40,470 --> 00:08:41,620
è necessario richiamare.

98
00:08:43,280 --> 00:08:50,450
Non che una sola dimensione sia davvero configurabile richiamando alcune questioni relative alla dimensione massima del pool dall'esecutore del

99
00:08:50,720 --> 00:08:51,870
pool di classi.

100
00:08:52,340 --> 00:08:55,200
Ma come ho detto prima hai risolto bene l'intera faccenda.

101
00:08:55,250 --> 00:08:56,980
È esatto

102
00:08:57,230 --> 00:09:02,980
Quindi abbiamo bisogno di lanciarlo, che eseguirà ciò che sta invocando questo metodo.

103
00:09:03,140 --> 00:09:09,910
Ora, nell'ultima riga, una delle questioni riguardava Singleton ed Executer e invocando quel metodo è simile alla creazione di

104
00:09:09,910 --> 00:09:13,620
un pool a tasso fisso con le dimensioni di uno.

105
00:09:14,050 --> 00:09:20,770
Ma con il vincolo che l'esecutore non può essere riconfigurato in modo che l'esecutore

106
00:09:20,770 --> 00:09:25,220
di ritorno avrà rigorosamente un singolo atto del prossimo.

107
00:09:25,290 --> 00:09:26,780
Castro lo farà.

108
00:09:27,140 --> 00:09:29,430
Sotto questa configurazione alcuni no.

109
00:09:29,450 --> 00:09:39,550
Sei proprio come nel caso di noi politica significa che non c'è alcun vincolo sulla creazione per un determinato compito.

110
00:09:39,590 --> 00:09:42,720
Se c'è una minaccia inattiva verrà rilasciato.

111
00:09:42,920 --> 00:09:47,620
Altrimenti verrà creato uno nuovo poiché può essere utilizzata una minaccia inattiva.

112
00:09:47,630 --> 00:09:56,280
È decisamente meglio della politica di Turbo Tax, poiché il riutilizzo delle minacce porterebbe a una migliore reattività.

113
00:09:56,300 --> 00:10:01,960
Tuttavia, un viaggio può essere inattivo per soli 60 secondi, dopodiché verrà terminato e

114
00:10:01,960 --> 00:10:03,430
rimosso dal denaro.

115
00:10:03,450 --> 00:10:05,370
Si noti che in caso di nuova correzione lì.

116
00:10:05,700 --> 00:10:11,490
Non esiste una tale restrizione su quanto a lungo può essere compreso.

117
00:10:11,490 --> 00:10:17,820
Buona scelta per un carico leggero, quindi non è preferito per le applicazioni con carichi pesanti. L'astrogazione non è

118
00:10:17,940 --> 00:10:18,950
disponibile qui.

119
00:10:20,860 --> 00:10:29,170
La questione finale era una nuova rete condivisa che crea un pool di dimensioni fisse che supporta l'eliminazione e

120
00:10:29,170 --> 00:10:31,110
l'esecuzione periodica delle attività.

121
00:10:31,110 --> 00:10:35,990
Ad esempio, è possibile eseguire il task ular dopo un periodo di 60 secondi.

122
00:10:36,340 --> 00:10:37,960
Quindi questo è un compito ritardato.

123
00:10:38,350 --> 00:10:43,800
Allo stesso modo non è possibile o dovrebbe eseguire l'attività una volta ogni ora periodicamente.

124
00:10:44,000 --> 00:10:45,290
Quindi questo è tutto.

125
00:10:45,290 --> 00:10:52,730
Abbiamo appreso come il framework esecutivo disaccoppia l'esecuzione dell'attività di invio delle attività e questo dà la

126
00:10:52,730 --> 00:10:58,860
flessibilità di creare diversi tipi di Rylander per le applicazioni con carichi elevati.

127
00:10:58,970 --> 00:11:00,850
La nuova piscina extra è prima.

128
00:11:01,040 --> 00:11:06,050
Mentre per le applicazioni leggermente caricate, il nuovo thread memorizzato nella cache lo precede.

129
00:11:06,050 --> 00:11:08,450
Ora andiamo avanti e facciamo una demo molto veloce.

130
00:11:11,050 --> 00:11:11,890
Ok per di più.

131
00:11:11,980 --> 00:11:18,820
Ho creato questa nuova classe chiamata Nai executer indexer nel nostro pacchetto indicizzatore di documenti di concorrenza.

132
00:11:18,820 --> 00:11:24,220
Quindi stiamo ancora una volta andando al downloader di hollower cercato e indicizzato a destra e stiamo andando a

133
00:11:24,220 --> 00:11:25,990
scaricare i link per il web.

134
00:11:25,990 --> 00:11:29,420
Ora qui creeremo l'esecutore.

135
00:11:29,620 --> 00:11:31,400
OK, quindi non abbiamo intenzione di affrontare.

136
00:11:31,410 --> 00:11:34,210
Non creeremo tourch direttamente.

137
00:11:34,300 --> 00:11:36,230
Useremo l'esecutore.

138
00:11:36,430 --> 00:11:38,130
Sono l'esecutore che stiamo per creare.

139
00:11:38,130 --> 00:11:45,360
Qui è stato risolto l'eseguibile OK e avremo un esecutore separato per il download e l'indicizzazione.

140
00:11:45,610 --> 00:11:51,820
Quindi abbiamo questi due esecutori non omicidio non lasciare che esegua un indice o un esecutore prima

141
00:11:51,820 --> 00:11:58,390
di invocare il metodo nuovo fisso che una chiamata dalla classe executors e stiamo passando un valore off

142
00:11:58,870 --> 00:12:05,680
a che significa che in ogni istanza data di tempo dovremo scaricare le tracce e allo stesso modo all'interno

143
00:12:05,680 --> 00:12:07,020
dell'indice o dell'esecutore.

144
00:12:07,080 --> 00:12:10,210
Bene, come si fa ferro inutilmente.

145
00:12:10,240 --> 00:12:16,900
Il programma stesso la classe stessa è chiamato noi indexer del mio esecutore, il che significa che c'è un

146
00:12:16,950 --> 00:12:23,900
po 'di Ninus in questa classe ed è molto simile al programma degli indicizzatori che abbiamo visto prima sulla

147
00:12:23,890 --> 00:12:30,070
limitazione di quella particolare classe era che il thread dell'indicizzatore era in attesa perché il thread

148
00:12:30,380 --> 00:12:36,590
del downloader finisse di scaricarlo e il dibattito stava imperversando era un po 'di tempo in loop.

149
00:12:37,150 --> 00:12:43,780
OK, la limitazione era che i cicli di spews si stavano perdendo e per questo abbiamo avuto un miglioramento

150
00:12:43,810 --> 00:12:49,590
quindi nella prossima directory creata con XOR grande non definito che è stato un miglioramento durante

151
00:12:49,750 --> 00:12:58,630
la notte in Nixa ma il tasso non definito del limite con quello è lo scuotimento manuale a basso livello ed è per questo che siamo

152
00:12:58,630 --> 00:13:01,290
qui alla ricerca di un buon quadro.

153
00:13:01,570 --> 00:13:05,210
Ma anche questo programma ha la stessa limitazione di un mixer irlandese.

154
00:13:05,290 --> 00:13:07,170
Dove vengono sprecati i cicli di notizie.

155
00:13:07,900 --> 00:13:09,990
E lo aggiusteremo nella prossima lezione.

156
00:13:10,250 --> 00:13:10,660
Così.

157
00:13:10,710 --> 00:13:14,990
Quindi qui stiamo creando due esecutori non esecutori non esecutori noti non esecutori.

158
00:13:15,330 --> 00:13:22,620
E quelli sono buoni e quelli sono fissi e saranno gli esecutori e nella questione principale stiamo istanziando come al

159
00:13:23,070 --> 00:13:29,520
solito e stiamo creando il tipo di oblongs su che stiamo aggiungendo qui in coda e siamo finalmente

160
00:13:29,520 --> 00:13:32,680
dentro, non importa in the go go importa.

161
00:13:32,760 --> 00:13:40,860
Stiamo scrivendo alla lista degli AQ al di fuori dei raddoppiamenti e passiamo ciascuno di essi creando un'istanza di downloader

162
00:13:40,860 --> 00:13:46,750
e passando quel bubbling e Donard sono semplicemente chiedere e lo stiamo passando con

163
00:13:46,750 --> 00:13:48,470
il corrispondente executer qui.

164
00:13:48,480 --> 00:13:53,850
Non conosciamo l'executer, stiamo facendo lo stesso, ma l'indice è OK e lo

165
00:13:53,850 --> 00:13:56,760
faremo attraverso tutte le chiacchiere OK.

166
00:13:56,860 --> 00:14:04,610
Quindi, dopo questo downloader per le viti, gli indici sono allungati e accanto a noi.

167
00:14:04,750 --> 00:14:07,340
OK io e l'uscita per il lavoro cornice.

168
00:14:07,360 --> 00:14:16,020
Bene, sapete che il tocco di questo framework di execute Pyg è veloce, quindi Bill li eseguirà e poi

169
00:14:16,080 --> 00:14:18,830
tornerà allo stato di inattività.

170
00:14:18,870 --> 00:14:20,650
Quindi lo sappiamo già.

171
00:14:21,090 --> 00:14:26,720
Quindi qui sono proprio accanto ai nostri sono molto simili a ciò che abbiamo visto prima nel programma.

172
00:14:26,750 --> 00:14:29,410
Quindi è solo lo stesso accordo qui.

173
00:14:29,520 --> 00:14:36,090
Non ordinano come denotando la pagina e invocano la seconda pagina HDMI nel weblink nell'oggetto bubbling sotto il

174
00:14:36,090 --> 00:14:38,760
discernimento della cronologia della mia pagina.

175
00:14:38,760 --> 00:14:44,820
Io e l'altro thread stiamo semplicemente girando qui finché la pagina HDMI non è stata scaricata.

176
00:14:45,000 --> 00:14:48,610
Quindi, non appena questo è abbastanza Tonalista vero.

177
00:14:48,630 --> 00:14:51,250
Poi andiamo avanti e accanto a Hetchy sulla mia pagina.

178
00:14:51,450 --> 00:14:57,930
Altrimenti continuiamo a fare il loop qui e questo ciclo che fa scorrere i cicli del CPS dura e

179
00:14:57,930 --> 00:15:05,580
l'unica cosa che potresti voler ricordare come il DMA del portello all'interno di questo IHG all'interno della pagina DMO del crosshatch vagante è

180
00:15:05,680 --> 00:15:07,740
in realtà voler girare ferro variabile.

181
00:15:07,740 --> 00:15:11,370
Ciò dà il vantaggio di visibilità alla memoria.

182
00:15:11,390 --> 00:15:18,780
Così facendo, anche se il thread su indice sarà in grado di vedere l'ultimo valore di successi sulla spiaggia non appena non si

183
00:15:18,780 --> 00:15:22,550
conosce il download o non si noterà il film in HD.

184
00:15:22,860 --> 00:15:24,380
Quindi questo è tutto.

185
00:15:24,390 --> 00:15:30,110
Quindi lasciami andare avanti e dirigerlo, notando che non è OK.

186
00:15:30,330 --> 00:15:33,050
Abbiamo finito così tutti i quattro link sono stati i prossimi.

187
00:15:33,050 --> 00:15:40,100
No, ma come puoi vedere molti cicli del sonno sono stati ripristinati sotto forma di looping qui.

188
00:15:40,200 --> 00:15:42,040
Quindi questo è lo svantaggio.

189
00:15:42,060 --> 00:15:45,450
Ora il programma è ancora in esecuzione come puoi vedere.

190
00:15:45,500 --> 00:15:48,380
Questo perché l'esecutore deve essere spento.

191
00:15:48,570 --> 00:15:54,870
OK, so che il motivo per cui non siamo in grado di spegnere è perché quei metodi

192
00:15:54,870 --> 00:16:01,860
non sono disponibili nell'interfaccia dell'esecutore sulla frode che dobbiamo usare il servizio executor che useremo nel prossimo nel prossimo

193
00:16:01,860 --> 00:16:03,890
Adem o nella prossima lezione.

194
00:16:03,990 --> 00:16:10,580
Sono d'accordo che fisseremo anche il limite del reinvestimento degli psicopatici del CPS e useremo

195
00:16:10,590 --> 00:16:16,320
altri tipi come callable e future e lo vedremo nel prossimo decennio.

196
00:16:16,320 --> 00:16:17,460
Questo è tutto.

197
00:16:17,460 --> 00:16:17,960
Grazie.

198
00:16:17,960 --> 00:16:21,240
E questo codice sarà disponibile nella sezione social.
