1
00:00:02,190 --> 00:00:08,110
Salve, questo è deciso a fare nell'ultima lezione, abbiamo visto come potremmo usare un fissatore.

2
00:00:08,140 --> 00:00:16,050
Bene, abbiamo anche visto che il programma dimostrativo aveva la limitazione dei cicli di CPM da polso e la limitazione era

3
00:00:16,050 --> 00:00:21,390
che JVM non poteva essere arrestato anche se le attività venivano portate a termine.

4
00:00:21,390 --> 00:00:26,670
In questa immagine vedremo come risolvere questi limiti, ma la demo farà parte della prossima

5
00:00:26,670 --> 00:00:27,280
lezione.

6
00:00:29,250 --> 00:00:34,600
Esegui tutto questo è ciò che useremo per risolvere i problemi come menzionato nella lezione precedente.

7
00:00:34,610 --> 00:00:43,130
Si tratta di un'interfaccia che estende l'esecutore in una nuova correzione che dipenderà dal servizio di esecuzione poiché è

8
00:00:43,130 --> 00:00:49,860
un buon esecutore dell'affidabilità del servizio nell'ultima lezione che abbiamo avuto come riferimento quando si

9
00:00:49,950 --> 00:00:58,620
trattava di esecutore extra quando era importante che Walk Executer avesse un solo limite È un esecutore tanto più

10
00:00:58,620 --> 00:01:07,550
sobrio è molto più vasto per fornire metodi per l'invio di compiti e per gestire le munizioni di Hostler sui

11
00:01:07,580 --> 00:01:11,420
metodi di invio nel servizio di esecuzione.

12
00:01:11,540 --> 00:01:18,400
Fornisce un metodo chiamato submit che è un metodo di invio migliore rispetto all'interfaccia

13
00:01:18,470 --> 00:01:28,050
old ed executor proprio come exit sarebbe nel metodo submit sull'esecutore che non è un executor, quindi l'argomento rende un'attività

14
00:01:28,050 --> 00:01:34,860
come nel libro sottoscritto Quindi un'istanza di futuro che è un'altra interfaccia nel

15
00:01:34,950 --> 00:01:41,870
pacchetto Java dot dot com corrent liberal causa futuro in una scommessa non qui.

16
00:01:41,880 --> 00:01:44,510
Essere considerato come eseguibile come prima.

17
00:01:45,260 --> 00:01:51,800
Oppure può essere una chiamata che è un'altra interfaccia nel pacchetto simultaneo dottrinale Java.

18
00:01:51,860 --> 00:01:57,230
Tieni a mente che runnable è Java, non il pacchetto Gel di Lanc, che

19
00:01:57,230 --> 00:02:05,480
è stato introdotto simultaneamente in Delphi su tutte le utility simultanee per quel tipo di task che i runable di ADA sono chiamabili.

20
00:02:05,510 --> 00:02:13,980
Ciò significa che il modo in cui i metodi di invio dell'invio non sono richiamabili è una migliore rappresentazione del compito quando l'esecuzione

21
00:02:14,430 --> 00:02:20,070
del compito a completamento può richiedere del tempo e essere in grado di soddisfare anche il

22
00:02:20,070 --> 00:02:21,530
risultato della competizione.

23
00:02:21,600 --> 00:02:28,160
Ad esempio nel nostro downloader un esempio di indicizzatore è possibile effettuare il download di un'attività implementare un'offerta

24
00:02:28,170 --> 00:02:33,990
istantanea richiamabile su nable, come abbiamo fatto fino a quando potrebbe richiedere un po 'di tempo

25
00:02:34,010 --> 00:02:43,030
per i download di una pagina su Blunstone ordinato la pagina web è necessaria dall'indicizzatore quindi argomento leggi un'istanza futura in futuro ha un metodo

26
00:02:43,030 --> 00:02:47,060
chiamato Ottieni blocchi vich. Il compito di ondel è completato.

27
00:02:47,080 --> 00:02:54,540
La questione avviene immediatamente se l'attività è già stata completata nei nostri esempi dimostrativi se passiamo l'attività downloader

28
00:02:54,540 --> 00:03:02,100
per inviare il metodo, quindi cercando di ottenere il woodblock dell'istanza di ritorno futuro sulle pagine Web di build,

29
00:03:02,100 --> 00:03:07,350
in modo che il futuro possa essere simile al metodo del dibattito.

30
00:03:07,770 --> 00:03:13,680
Questo è un ciclo BCPL e blocca fino a quando il risultato non viene calcolato.

31
00:03:13,680 --> 00:03:18,840
Quindi questo è il modo in cui affronteremo la limitazione nel DM precedente o i tuoi cicli

32
00:03:18,840 --> 00:03:19,590
verranno sprecati.

33
00:03:21,520 --> 00:03:29,530
Se l'attività è richiamabile, il futuro non ricevuto restituirà effettivamente il risultato calcolato da tale attività se l'attività non

34
00:03:29,530 --> 00:03:35,070
è eseguibile, quindi in futuro o non restituirà un valore nullo anziché calcolato

35
00:03:35,070 --> 00:03:42,250
o non otterrà che il metodo get lo blocchi a prescindere se l'attività è eseguibile o eseguibile.

36
00:03:42,520 --> 00:03:45,260
È solo Ebbert callable che viene scritto in scatola.

37
00:03:45,280 --> 00:03:52,150
Il motivo per cui il costo calcolato qui è il modo in cui l'interfaccia richiamabile sembra

38
00:03:52,210 --> 00:03:56,690
avere un unico metodo chiamato Chiama superato implementerebbe questa interfaccia.

39
00:03:56,720 --> 00:04:01,360
Ora ricorda che runnable ha un unico metodo eseguito come puoi vedere.

40
00:04:01,390 --> 00:04:08,520
Il collimatore a differenza del run in una routine eseguibile, quindi il dessert potrebbe anche generare un'eccezione.

41
00:04:08,630 --> 00:04:13,950
Non che il metodo di esecuzione in runnable non genera un'eccezione per eccezione.

42
00:04:13,970 --> 00:04:21,390
Voglio dire, l'eccezione Ceb tuttavia sul metodo può generare un'eccezione non controllata che è in quella materia.

43
00:04:21,530 --> 00:04:24,560
Puoi chiamare per controllare l'eccezione in ogni posto.

44
00:04:24,800 --> 00:04:31,900
È possibile leggere sull'eccezione non controllata che il thread sarebbe terminato ma questo backtrace.

45
00:04:32,350 --> 00:04:38,260
Quindi questo è qualcosa che non è stato specificato in precedenza durante la nostra discussione sul runnable in

46
00:04:38,320 --> 00:04:42,310
modo che callable possa restituire un risultato e possa anche fare un'eccezione.

47
00:04:42,310 --> 00:04:48,930
In effetti il valore restituito dal cane futuro ottiene il valore restituito dal metodo coggato più avanti nella nostra demo.

48
00:04:48,970 --> 00:04:54,830
Vedremo come l'attività downloader implementa questa interfaccia per restituire la pagina Web scaricata.

49
00:04:54,850 --> 00:05:01,990
Si noti che se l'attività non deve restituire un valore, è possibile implementarlo come eseguibile nel nostro indice

50
00:05:02,670 --> 00:05:09,050
o l'attività può implementare questa eseguibile invece di chiamabile in quanto non deve restituire alcun valore.

51
00:05:10,800 --> 00:05:14,300
Quando fa il processo di sottomissione dell'uscita Kutuzov è.

52
00:05:14,300 --> 00:05:19,190
Vediamo ora come esecutore SILVIS il mio processo di combinazione Majus.

53
00:05:19,200 --> 00:05:25,770
Richard questa è la seconda edizione del precedente Dym che JVM ha continuato a eseguire nonostante tutte le

54
00:05:25,790 --> 00:05:30,220
attività che cercavano di completare esattamente per risolvere questo ciclo di vita.

55
00:05:30,290 --> 00:05:37,220
Solo tre stati che eseguono lo spegnimento del primo executor terminato, quindi questo sarà in

56
00:05:37,220 --> 00:05:41,840
esecuzione e in questo stato accetta DOS e li esegue.

57
00:05:43,320 --> 00:05:50,040
La prossima uscita dal syllabus può essere spostata nello stato di arresto invocando il suo metodo di

58
00:05:50,520 --> 00:05:52,700
spegnimento o nomenclatura di spegnimento.

59
00:05:54,260 --> 00:06:00,800
Una volta invocato uno di questi metodi, nessuna nuova classe sarà accettata da ex-secret

60
00:06:00,800 --> 00:06:09,580
o così si sta tentando di inviarci si verificherà un'eccezione di runtime se Saddam è e si spegnerà in modo

61
00:06:09,590 --> 00:06:10,380
aggraziato.

62
00:06:10,790 --> 00:06:14,550
Questo è tutto il compito che è stato presentato finora sarà eseguito.

63
00:06:16,420 --> 00:06:22,770
Se viene invocato Shadow, come mezzo suggerire che l'esecutore verrà arrestato bruscamente.

64
00:06:22,780 --> 00:06:29,980
Ciò significa che tutti quelli che ci stanno attualmente eseguendo verranno interrotti tramite chiamate di interrupt e che sono in attesa

65
00:06:30,070 --> 00:06:35,710
che nella coda da prelevare non vengano elaborati in queste date in attesa che la coda

66
00:06:35,830 --> 00:06:42,430
venga restituita dal metodo in modo che possano essere impostati per l'elaborazione successiva in modo che Shadowman non possa

67
00:06:42,430 --> 00:06:46,150
essere visto come terza interruzione nel contesto non esecutivo.

68
00:06:47,190 --> 00:06:54,090
Ancora una volta, non una volta una qualsiasi di queste cose, così l'esecutore l'esecutore non accetterà alcun nuovo Das

69
00:06:56,020 --> 00:07:02,340
finalmente una o due volte che sono stato completato dopo l'invocazione della chiusura Osher non conosce le mosse

70
00:07:02,370 --> 00:07:03,030
dell'intruso.

71
00:07:03,080 --> 00:07:10,260
Dominique ex-stato C'è anche una cosiddetta Germania dell'Est che ha fatto un servizio esecutivo che fa

72
00:07:10,320 --> 00:07:18,580
raggiungere un esecutore migliore a una corte statale dominata, non una domanda che puoi avere è perché dobbiamo preoccuparci

73
00:07:18,700 --> 00:07:20,970
se l'esecutore domina o meno.

74
00:07:22,590 --> 00:07:29,940
Un'ipotesi è per lo scopo del monitoraggio ad esempio in un'applicazione su larga scala in cui potremmo

75
00:07:29,940 --> 00:07:37,170
decidere come riutilizzare lo stesso executer di Hamlin a un certo punto potremmo voler chiudere l'applicazione,

76
00:07:37,170 --> 00:07:44,700
nel qual caso possiamo invocare il metodo Sheldan che comportano tutte le attività esistenti da completare e

77
00:07:44,700 --> 00:07:46,810
non accetteranno nessuna novità.

78
00:07:46,860 --> 00:07:47,400
Destra.

79
00:07:47,730 --> 00:07:50,370
Ma anche questo richiede troppo tempo per essere completato.

80
00:07:50,550 --> 00:07:53,290
Quindi potremmo voler accelerare il processo.

81
00:07:54,250 --> 00:08:00,240
Quindi, se possiamo aspettare un certo periodo di tempo invocando il predominio inaspettato e il servizio

82
00:08:00,240 --> 00:08:08,420
di esecutori che i ritorni sono veri se tutte le attività sono completate imperterrite, è seguita da ciò che accade in questo

83
00:08:08,420 --> 00:08:09,110
caso.

84
00:08:09,110 --> 00:08:14,890
Si può invocare Charbonneau che sappiamo ignora il passato che orating in the code

85
00:08:14,900 --> 00:08:18,080
e ininterrotte che vengono catturati ed eseguiti.

86
00:08:18,160 --> 00:08:24,910
Per favore sappiate che non c'è Dio e B che interrompono realmente interromperanno un compito reale che

87
00:08:24,910 --> 00:08:33,480
il compito potrebbe richiedere a come la logica per rispondere all'interrupt o così possiamo invocare il dominio eccessivo ancora una volta

88
00:08:33,480 --> 00:08:39,970
sotto l'esecutore ancora non raggiunge lo stato di dominatori allora possiamo stampare la dichiarazione che

89
00:08:39,970 --> 00:08:41,720
l'executer non può terminare.

90
00:08:41,760 --> 00:08:48,980
Ecco come possiamo monitorare la velocità dell'applicazione quando stiamo provando a chiudere finalmente.

91
00:08:49,080 --> 00:08:51,250
Parliamo un po 'del futuro.

92
00:08:51,330 --> 00:08:57,570
Abbiamo visto che un'istanza futura sarebbe stata scritta nel metodo submit sull'esecutore e un'istanza

93
00:08:57,570 --> 00:09:01,490
futura rappresenta il ciclo di vita di un'attività.

94
00:09:01,530 --> 00:09:08,740
In altre parole, può essere utilizzato per tenere traccia dell'avanzamento di un sottomercato non è stato nominato alcun importo di aiuto.

95
00:09:08,960 --> 00:09:15,530
Puoi pensare al futuro come a un oggetto che è stato spinto in futuro, ma con un calcolo incompleto che

96
00:09:16,220 --> 00:09:18,610
è necessario in altre parti del programma.

97
00:09:19,600 --> 00:09:22,750
Quindi l'oggetto futuro può aiutare a guardare indietro.

98
00:09:22,840 --> 00:09:26,750
Normalmente i calcoli incompleti sono stati completati per tutto il tempo.

99
00:09:27,300 --> 00:09:32,690
Volevamo solo andare sul metodo GET che blocca se l'attività non è stata ancora completata.

100
00:09:33,180 --> 00:09:36,790
E una volta completata l'attività, restituisce il computer al risultato.

101
00:09:37,020 --> 00:09:44,620
Se l'attività è chiamabile ma se le attività non sono conoscibili, possiamo vedere un valore nullo.

102
00:09:44,660 --> 00:09:51,100
E qui è l'interesse della missione del futuro budak non presentato presentare il compito di sottomercato ufficio del ciclo di

103
00:09:51,120 --> 00:09:54,540
vita del concerto, non importa chi si può essere coinvolti.

104
00:09:54,570 --> 00:09:56,060
Chi può selezionarci.

105
00:09:56,520 --> 00:09:59,450
Potrebbe identificare anche se Basken o cancro.

106
00:09:59,950 --> 00:10:06,890
E ciò potrebbe essere dovuto al fatto che il taske è già in esecuzione o è già stato cancellato.

107
00:10:07,630 --> 00:10:13,720
Ma se il paniere non è ancora stato avviato, il metodo del consiglio non funziona, quindi potrebbe essere fatto

108
00:10:13,720 --> 00:10:15,930
e il compito non sarà Stockard.

109
00:10:16,110 --> 00:10:22,430
Ma se l'attività è attualmente in esecuzione, potrebbe essere scritta indipendentemente da ciò che viene passato o

110
00:10:22,440 --> 00:10:25,030
il parametro del metodo potrebbe interrompersi.

111
00:10:25,070 --> 00:10:33,710
Se è in esecuzione come gruppo per questo barometro, l'attività in esecuzione potrebbe essere interrotta in seguito è il metodo East

112
00:10:33,720 --> 00:10:38,930
Cancel e restituirà un gruppo se l'attività è stata annullata in precedenza.

113
00:10:39,080 --> 00:10:46,390
Il metodo can cancel next è materia facile che restituisce true se l'attività è stata completata.

114
00:10:46,390 --> 00:10:53,070
Non puoi munizioni Mirta su un'eccezione o a causa di una cancellazione, ma stai migliorando.

115
00:10:53,160 --> 00:10:54,930
Che già sappiamo.

116
00:10:54,930 --> 00:11:02,250
Finalmente c'è una specie di oceano per ottenere una percentuale di tempo per la maggior parte del tempo o

117
00:11:02,280 --> 00:11:04,540
della competizione su cui competere.

118
00:11:04,590 --> 00:11:05,700
Non sono un'eccezione

119
00:11:05,760 --> 00:11:12,060
Se trascorre un tempo specificato e l'attività non viene completata in un ospite di utilizzo rapido e continuo.

120
00:11:12,300 --> 00:11:18,330
Se non si desidera attendere l'attività del downloader per terminare il download per più di uno

121
00:11:18,900 --> 00:11:26,250
o due secondi, è possibile utilizzare questo metodo get time una delle lezioni di follow up quindi concentrarsi sull'inserimento dei limiti

122
00:11:26,310 --> 00:11:28,260
di colpa sul nostro lavoro.

123
00:11:28,270 --> 00:11:35,800
Non è che mi sbaglio, prendi byme get tranne per eccezione Maat per il tempo migliore, ma quello è il

124
00:11:35,890 --> 00:11:39,510
controllo che controlla le eccezioni una è un'eccezione interrotta.

125
00:11:39,550 --> 00:11:42,340
L'è un'eccezione.

126
00:11:42,440 --> 00:11:49,130
Poiché questi metodi bloccano i loro spawn per interrompere le chiamate generando un'esecuzione di

127
00:11:49,240 --> 00:11:55,350
esecuzione interrotta, un'eccezione verrebbe generata se l'attività sottostante lanciava qualche eccezione sulla causa

128
00:11:55,350 --> 00:12:03,210
effettiva dell'eccezione di esecuzione può essere ispezionata invocando get kosmic che anche se è passata attraverso un

129
00:12:03,210 --> 00:12:07,200
eccezione non controllata chiamata eccezione di cancellazione.

130
00:12:07,200 --> 00:12:15,180
Se il compito era il cancro, allora quelli sono i diversi metodi in futuro è l'effettiva

131
00:12:15,420 --> 00:12:22,680
istanza futura scritta dal metodo executor submit è un'istanza di una classe chiamata Future

132
00:12:22,690 --> 00:12:25,430
task che implementa il futuro.

133
00:12:25,560 --> 00:12:27,850
Infine riassumiamo ciò che abbiamo imparato.

134
00:12:28,200 --> 00:12:29,570
Tutto ciò che era insieme a Coira.

135
00:12:29,670 --> 00:12:31,890
In realtà è piuttosto semplice.

136
00:12:31,890 --> 00:12:38,940
Il primo passo è stato quello di ottenere un tipo di riferimento dell'esecutore sarebbe il più esteso esecutore

137
00:12:38,940 --> 00:12:42,130
SILVIS e si fermò all'interfaccia di esecuzione.

138
00:12:42,230 --> 00:12:44,870
Il prossimo è di inviare l'attività all'esecutore.

139
00:12:44,930 --> 00:12:52,010
L'altro metodo di invio che risponderebbe al compito futuro dell'oggetto qui può essere o eseguibile o calleble contla

140
00:12:52,970 --> 00:12:54,630
chiamabile su un deserto.

141
00:12:54,650 --> 00:13:02,590
Posso anche lanciare un'eccezione controllata il prossimo passo sarebbe invocare il metodo get sull'istanza return return e

142
00:13:02,590 --> 00:13:07,010
questo metodo si bloccherebbe e quindi l'attività sarà completata.

143
00:13:07,160 --> 00:13:12,790
Acquistalo e il risultato della competizione se l'attività inviata è stata richiamabile altrimenti restituirebbe un

144
00:13:12,790 --> 00:13:13,720
valore nullo.

145
00:13:15,130 --> 00:13:21,540
Infine, dobbiamo arrestare l'executor e non è necessario arrestarlo immediatamente dopo l'elaborazione.

146
00:13:22,120 --> 00:13:27,940
Su quali applicazioni potremmo avere un numero elevato di thread, potremmo voler mantenere vivo l'esecutore per un lungo

147
00:13:27,940 --> 00:13:32,650
periodo di tempo in modo che possa essere utilizzato per eseguire diversi test.

148
00:13:32,740 --> 00:13:34,980
Quindi questo è tutto nel prossimo periodo.

149
00:13:35,040 --> 00:13:38,220
Faremo una demo su ciò che abbiamo imparato in questa conferenza.

150
00:13:38,470 --> 00:13:38,860
Grazie.
