Hardware Questo è di mentalità ristretta.
Iniziamo con il quadro esecutivo quello che abbiamo visto finora è che il nostro approccio al compito è
un compito creato e assegnato a una qualifica di minaccia appena creata.
Che arte raffinata e un nuovo approccio in cui un compito è definito come parte del Turnage.
Quindi c'è una stretta connessione tra il contenuto dell'attività che è per ogni nuova attività.
Abbiamo una nuova discussione.
E questo funziona solo per applicazioni su piccola scala.
Ma ha delle limitazioni quando viene utilizzato in applicazioni su larga scala in cui grandi numeri che possono essere creati
con una limitazione è la creazione di camion e il commercio dei costi.
Se può esserci un gran numero di Krach, allora crea thread in Kansi quantità significative di risorse.
Questo costo è stato rilasciato anche su Blackhorse in base al numero elevato di thread eseguibili che possono essere utilizzati se
la memoria e altre limitazioni del task cribber sono l'instabilità di un'applicazione.
E questo è dovuto alla mancanza di un limite sul numero di minacce che possono essere create su una data piattaforma.
Ci sarebbe una soglia sul numero di parole che possono essere create e se questa soglia viene raggiunta
molto probabilmente si verificherà un errore di memoria insufficiente, quindi la creazione di un numero elevato di thread non solo consumerà
molta memoria ma può anche portare alla nostra memoria.
Quindi la soluzione per questa limitazione è il quadro esecutivo, ma è anche raccomandato da
questo effetto di Daleiden sotto vestita per l'esecutore.
Ho chiesto a Ruperts di utilizzare questo framework.
Non affronteremo direttamente le minacce che gestiscono intrinsecamente il quadro esecutivo.
Il framework degli espositori è essenzialmente un compito molto flessibile e potente.
Il framework di esecuzione sotto esso consiste in un libro che tu e Turkel siete essenzialmente una coda che contiene tutte
le attività che devono essere eseguite.
Trackball è semplicemente un pool di thread che esegue l'attività nel libro.
In questa illustrazione il simbolo è rappresentato da minaccia under-class del noise book che implementa
l'interfaccia Runnable.
In effetti più avanti vedremo anche un altro tipo di basco chiamato Carloman.
In questo contesto, quindi, rende l'attività successiva dalla coda.
Lo esegue e torna alla piscina in attesa di un'altra operazione.
Quindi thread non viene terminato non appena termina l'esecuzione proprio come nel caso.
Off-track per approccio al compito.
Tornerà alla piscina in modo che possa essere riutilizzata più e più volte per nuovi test.
E queste virgolette dirette possono essere di tipi diversi e puoi specificare quale tipo
di lavoro vorresti creare ricerche UNbacked come il numero di thread del thread su come e quanto a lungo
saranno i thread.
E questa è essenzialmente la gestione del tempo.
Quindi possiamo specificare il tipo di minaccia che vorremmo su come nella nostra applicazione
e vorremmo presto vedere le tartarughe comunemente usate.
Quindi la prossima domanda è come fa l'uscita del framework di Cukor ad affrontare le limitazioni
dell'approccio basco alla parte basca così come non è stato appena menzionato una volta creato il pool di rischio.
Ha un numero fisso di minacce e possono essere prontamente utilizzate senza dover creare un nuovo thread per
ogni nuova attività che verrà eseguita sulla creazione della tassa di vendita sui costi di Didon.
Pertanto, un task verrà eseguito immediatamente senza dover attendere una minaccia appena creata in modo
che ciascuno di essi esegua una migliore reattività poiché possiamo avere un limite superiore al numero di minacce a cui
un tecnico affronta anche le altre due limitazioni.
La terza limitazione riguardava l'instabilità.
Potremmo finire con un errore di memoria on-off quando non ci sono vincoli sul numero di testo da creare.
Ora vediamo come viene rappresentato il quadro esecutivo.
Più tardi faremo anche un brevissimo termine.
C'è questa interfaccia chiamata executor che le persone che eseguono il framework di esecuzione.
E ha un metodo di esecuzione che prende un eseguibile come è stato passato o qualcosa si è verificato qui.
Questo metodo mostra a Tibet come è possibile implementarlo da task executer come si può vedere implementa l'interfaccia
executor e il metodo di esecuzione in folle è lo spon.
Ogni nuovo compito.
Quindi questo è il trucco per l'esecuzione del compito su questo è come dovrebbe apparire il codice del client.
Come possiamo vedere, ma iniziare a essere inviati con lo stesso executer qui è come si creerebbe un singolo
esecutore di thread.
Questo è un nuovo thread non creato per il dato a noi.
Stiamo invocando direttamente l'argomento di esecuzione su quell'istanza eseguibile, quindi qui ogni attività viene eseguita in sequenza
come parte della strategia di colore.
Quindi quello che stiamo vedendo qui è un diverso tipo di esecutore rispetto a quello che abbiamo visto nella diapositiva precedente
con la terza attività.
Esecutore.
Quindi, essenzialmente con questo tipo di framework, potremmo disaccoppiare l'invio passato dall'attuale processo
di esecuzione passato.
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
modo che questa classica uscita si verifichi dall'articolo Jacquard del pacchetto o dalla conquista del bianco pro.
La maggior parte degli esecutori che avremo mai bisogno del tema degli Stati Uniti i metodi qui sono alcuni dei che sto abbaiando pazzo.
Questo è il nuovo pool di thread fissi new cast pool new single thread esegui un nuovo Should your will.
Quindi questi metodi hanno scritto l'esecutore ma alcune proprietà associate ad essi.
All'uscita è stato scritto dai metodi ostili implementati nel primo servizio executor che estende
l'interfaccia executor ed è davvero molto esteso come vedremo in seguito.
Quindi il tipo di ritorno di questi tre metodi è un servizio executor.
L'ultimo metodo legge un esecutore che implementa se il tuo servizio esecutore esiste.
Exec o servizio non di quell'esecutore Stewart e con questi metodi sono esempi di una classe chiamata Tech che
executer ottiene direttamente dal pacchetto.
Voglio parlare di conking all'ultimo minuto che restituisce effettivamente un'istanza di una sottoclasse di questa classe.
Esecutore e questa classe estende il servizio di astrattore astratto che è un'implementazione scheletrica di executer
così viene specificata in precedenza.
Possono utilizzare uno di questi metodi, in quanto gli esecutori restituiscono l'indirizzo degli scenari di utilizzo più comuni.
E se hai bisogno di un executer più personalizzato, puoi utilizzarlo direttamente quando guardi la classe.
E puoi ottenere maggiori informazioni su questo leggendolo un po '.
Iniziamo ad esaminare brevemente gli attributi degli esecutori che sono scritti con i metodi e la
notte precedente.
E iniziamo con il nuovo trackwork fisso, dato che i nomi sono solo questo metodo che lo crea in modo
da impostare tutte le dimensioni specificate dal parametro di input e dal trucco.
Quindi la trackball avrà un massimo di antrace che sarà acto.
E il modo in cui funziona è che inizialmente non ci saranno tracce ma verrà chiesto come verrà creata la
mia nuova struttura morta per garantire che continui su quelle dimensioni di pool raggiunte non se le dimensioni del pool non sono ancora state
raggiunte e se c'è una nuova attività viene creato un nuovo thread per eseguire l'attività anche se è presente
una minaccia inattiva.
Tuttavia, una volta raggiunta la dimensione del pool, non vengono create nuove minacce per qualsiasi nuova attività o viene utilizzata
una minaccia inattiva o l'attività viene protetta fino a quando un thread diventa inattivo.
Quindi in qualsiasi momento la maggior parte dei partecipanti lavorerà attivamente a noi e questo o un thread esistente
muore.
Eccezione e se si ha a che fare con un server di produzione pesantemente caricato, questo è il metodo che
è necessario richiamare.
Non che una sola dimensione sia davvero configurabile richiamando alcune questioni relative alla dimensione massima del pool dall'esecutore del
pool di classi.
Ma come ho detto prima hai risolto bene l'intera faccenda.
È esatto
Quindi abbiamo bisogno di lanciarlo, che eseguirà ciò che sta invocando questo metodo.
Ora, nell'ultima riga, una delle questioni riguardava Singleton ed Executer e invocando quel metodo è simile alla creazione di
un pool a tasso fisso con le dimensioni di uno.
Ma con il vincolo che l'esecutore non può essere riconfigurato in modo che l'esecutore
di ritorno avrà rigorosamente un singolo atto del prossimo.
Castro lo farà.
Sotto questa configurazione alcuni no.
Sei proprio come nel caso di noi politica significa che non c'è alcun vincolo sulla creazione per un determinato compito.
Se c'è una minaccia inattiva verrà rilasciato.
Altrimenti verrà creato uno nuovo poiché può essere utilizzata una minaccia inattiva.
È decisamente meglio della politica di Turbo Tax, poiché il riutilizzo delle minacce porterebbe a una migliore reattività.
Tuttavia, un viaggio può essere inattivo per soli 60 secondi, dopodiché verrà terminato e
rimosso dal denaro.
Si noti che in caso di nuova correzione lì.
Non esiste una tale restrizione su quanto a lungo può essere compreso.
Buona scelta per un carico leggero, quindi non è preferito per le applicazioni con carichi pesanti. L'astrogazione non è
disponibile qui.
La questione finale era una nuova rete condivisa che crea un pool di dimensioni fisse che supporta l'eliminazione e
l'esecuzione periodica delle attività.
Ad esempio, è possibile eseguire il task ular dopo un periodo di 60 secondi.
Quindi questo è un compito ritardato.
Allo stesso modo non è possibile o dovrebbe eseguire l'attività una volta ogni ora periodicamente.
Quindi questo è tutto.
Abbiamo appreso come il framework esecutivo disaccoppia l'esecuzione dell'attività di invio delle attività e questo dà la
flessibilità di creare diversi tipi di Rylander per le applicazioni con carichi elevati.
La nuova piscina extra è prima.
Mentre per le applicazioni leggermente caricate, il nuovo thread memorizzato nella cache lo precede.
Ora andiamo avanti e facciamo una demo molto veloce.
Ok per di più.
Ho creato questa nuova classe chiamata Nai executer indexer nel nostro pacchetto indicizzatore di documenti di concorrenza.
Quindi stiamo ancora una volta andando al downloader di hollower cercato e indicizzato a destra e stiamo andando a
scaricare i link per il web.
Ora qui creeremo l'esecutore.
OK, quindi non abbiamo intenzione di affrontare.
Non creeremo tourch direttamente.
Useremo l'esecutore.
Sono l'esecutore che stiamo per creare.
Qui è stato risolto l'eseguibile OK e avremo un esecutore separato per il download e l'indicizzazione.
Quindi abbiamo questi due esecutori non omicidio non lasciare che esegua un indice o un esecutore prima
di invocare il metodo nuovo fisso che una chiamata dalla classe executors e stiamo passando un valore off
a che significa che in ogni istanza data di tempo dovremo scaricare le tracce e allo stesso modo all'interno
dell'indice o dell'esecutore.
Bene, come si fa ferro inutilmente.
Il programma stesso la classe stessa è chiamato noi indexer del mio esecutore, il che significa che c'è un
po 'di Ninus in questa classe ed è molto simile al programma degli indicizzatori che abbiamo visto prima sulla
limitazione di quella particolare classe era che il thread dell'indicizzatore era in attesa perché il thread
del downloader finisse di scaricarlo e il dibattito stava imperversando era un po 'di tempo in loop.
OK, la limitazione era che i cicli di spews si stavano perdendo e per questo abbiamo avuto un miglioramento
quindi nella prossima directory creata con XOR grande non definito che è stato un miglioramento durante
la notte in Nixa ma il tasso non definito del limite con quello è lo scuotimento manuale a basso livello ed è per questo che siamo
qui alla ricerca di un buon quadro.
Ma anche questo programma ha la stessa limitazione di un mixer irlandese.
Dove vengono sprecati i cicli di notizie.
E lo aggiusteremo nella prossima lezione.
Così.
Quindi qui stiamo creando due esecutori non esecutori non esecutori noti non esecutori.
E quelli sono buoni e quelli sono fissi e saranno gli esecutori e nella questione principale stiamo istanziando come al
solito e stiamo creando il tipo di oblongs su che stiamo aggiungendo qui in coda e siamo finalmente
dentro, non importa in the go go importa.
Stiamo scrivendo alla lista degli AQ al di fuori dei raddoppiamenti e passiamo ciascuno di essi creando un'istanza di downloader
e passando quel bubbling e Donard sono semplicemente chiedere e lo stiamo passando con
il corrispondente executer qui.
Non conosciamo l'executer, stiamo facendo lo stesso, ma l'indice è OK e lo
faremo attraverso tutte le chiacchiere OK.
Quindi, dopo questo downloader per le viti, gli indici sono allungati e accanto a noi.
OK io e l'uscita per il lavoro cornice.
Bene, sapete che il tocco di questo framework di execute Pyg è veloce, quindi Bill li eseguirà e poi
tornerà allo stato di inattività.
Quindi lo sappiamo già.
Quindi qui sono proprio accanto ai nostri sono molto simili a ciò che abbiamo visto prima nel programma.
Quindi è solo lo stesso accordo qui.
Non ordinano come denotando la pagina e invocano la seconda pagina HDMI nel weblink nell'oggetto bubbling sotto il
discernimento della cronologia della mia pagina.
Io e l'altro thread stiamo semplicemente girando qui finché la pagina HDMI non è stata scaricata.
Quindi, non appena questo è abbastanza Tonalista vero.
Poi andiamo avanti e accanto a Hetchy sulla mia pagina.
Altrimenti continuiamo a fare il loop qui e questo ciclo che fa scorrere i cicli del CPS dura e
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 è
in realtà voler girare ferro variabile.
Ciò dà il vantaggio di visibilità alla memoria.
Così facendo, anche se il thread su indice sarà in grado di vedere l'ultimo valore di successi sulla spiaggia non appena non si
conosce il download o non si noterà il film in HD.
Quindi questo è tutto.
Quindi lasciami andare avanti e dirigerlo, notando che non è OK.
Abbiamo finito così tutti i quattro link sono stati i prossimi.
No, ma come puoi vedere molti cicli del sonno sono stati ripristinati sotto forma di looping qui.
Quindi questo è lo svantaggio.
Ora il programma è ancora in esecuzione come puoi vedere.
Questo perché l'esecutore deve essere spento.
OK, so che il motivo per cui non siamo in grado di spegnere è perché quei metodi
non sono disponibili nell'interfaccia dell'esecutore sulla frode che dobbiamo usare il servizio executor che useremo nel prossimo nel prossimo
Adem o nella prossima lezione.
Sono d'accordo che fisseremo anche il limite del reinvestimento degli psicopatici del CPS e useremo
altri tipi come callable e future e lo vedremo nel prossimo decennio.
Questo è tutto.
Grazie.
E questo codice sarà disponibile nella sezione social.