‫Bem-vindo de volta a este vídeo, veremos os pools de ameaças, portanto, vamos criar vários tópicos
‫e ver o que vai acontecer.
‫Portanto, vamos primeiro simplesmente criar um encadeamento muito básico e vou me livrar
‫desse material de fonte de conclusão.
‫E então estamos em um tópico muito genérico aqui.
‫Portanto, esse é um tópico genérico que usamos até agora.
‫E aqui esperamos um segundo, por exemplo, e tem uma discussão.
‫Não.
‫E para iniciá-lo, é claro, precisamos chamar o método start aqui no final.
‫Então, agora isso vai ser apenas um tópico e vai começar.
‫Portanto, nada de novo aqui.
‫Fizemos isso várias vezes lá.
‫Portanto, a única diferença é que agora eu gostaria de usar algo chamado pool de threads.
‫Mas antes de fazer isso, vou usar uma conta numérica e numerável como essa,
‫e vou executar um intervalo de zero a, digamos, 100 por agora, duas listas e para cada entrada.
‫Eu gostaria de fazer algo.
‫Então, vou apenas dizer apenas execute um código específico.
‫Portanto, esta é apenas uma linha de código.
‫E aí eu quero criar tópicos.
‫Então, o que vai fazer é este I enumerable ou este enumerable vai realmente criar vários
‫threads e vai criar 100 deles.
‫Vou usar um link aqui.
‫Então, usando o link do sistema, a fim de usar o enumerável e deve ser chamado de intervalo com ele no final
‫para que possamos.
‫Isso vai fazer é simplesmente criar 100 ameaças e veremos todas essas ameaças no console.
‫Então, vamos começar com isso.
‫E aí estamos nós.
‫E como você pode ver, está iniciando os threads e está terminando os threads e cento e dois é o último
‫thread.
‫E posso ver que começou com três.
‫Então começa com três, seis, cinco e assim por diante.
‫Portanto, o pedido, como você pode ver, é muito diferente do que esperávamos.
‫Portanto, os threads têm um ID diferente da ordem em que esperávamos que estivessem, mas então eles são iniciados e terminados
‫e talvez isso tenha sido um pouco rápido demais.
‫Então, vamos criar um pouco mais de ameaças ou diria 1000 threads.
‫E como você pode ver.
‫Ele cria toneladas de encadeamentos, mas os encadeamentos são encerrados antes que outros sejam iniciados.
‫Portanto, há inúmeros. Ele os inicia onde os cria o mais rápido possível, o mais rápido possível.
‫Mas, como você pode ver, demora um pouco.
‫Digamos que cerca de cem milissegundos ou mais para criar um thread que somos, ele os cria e
‫depois começa a terminá-los.
‫Então, depois de um segundo, ele criou seis threads apenas e, em seguida, thread cinco.
‫Então um dos primeiros foi encerrado.
‫Como você pode ver, isso cria essas ameaças.
‫E isso não é muito eficiente porque, bem, não podemos controlar essas ameaças.
‫Não podemos controlar essa quantidade de ameaças.
‫E esse é um aspecto muito importante.
‫As ameaças que você tem que ter muito, muito cuidado e muito preciso ao trabalhar com ameaças.
‫Você precisa saber o que quer fazer com aquela ameaça e os brancos lá e como trabalhar de maneira geral com tudo o
‫que está dentro da ameaça.
‫Esse é apenas um exemplo de ameaças, como você pode criar várias delas.
‫E acabou de criar milhares de ameaças como essa.
‫E agora vamos dar uma olhada nos pools de ameaças porque seus pools
‫têm uma abordagem um pouco diferente e usam ameaças e são um pouco mais seguros, digamos, porque não criam
‫mil ameaças desnecessárias.
‫Ele contém apenas as ameaças que são necessárias no momento.
‫Então, vamos criar um pool de ameaças aqui.
‫E item de trabalho do usuário Q.
‫Q é um método de execução executado quando uma ameaça do pool de ameaças se torna disponível.
‫Portanto, apenas se estiver disponível, ele será executado e precisará de um objeto aqui.
‫Portanto, existem dois diferentes aqui para ver o retorno de chamada e o objeto e vou apenas dar a ele um oh
‫como um objeto.
‫Só vou ligar.
‫Oh, nada de especial aqui.
‫E o que vou executar no pool de ameaças.
‫Então eu só vou dizer dê-me o I. D. da ameaça ou do número da ameaça e digamos quando
‫começou e quando terminou.
‫Então, isso é tudo que eu quero fazer com esse pool de ameaças.
‫E como você pode ver aqui, não criamos especificamente, não criamos ameaças lá.
‫Mas esse pool de ameaças fará isso por nós.
‫Portanto, há muito trabalho a fazer, como mil ameaças para lidar.
‫E como você pode ver, isso cria apenas uma quantidade específica de ameaças.
‫E como você pode ver, ele inicia e termina as ameaças mais ou menos ao mesmo tempo.
‫E você pode ver também que não tenho muitas chamadas na minha CPU aqui porque ela só pode trabalhar com uma quantidade específica
‫de ameaças ao mesmo tempo.
‫Portanto, o pool de ameaças irá lidar com as coisas de forma muito mais suave, como você pode ver.
‫Mas, claro, leva muito tempo para superar todas essas 1000 ameaças.
‫Mas, como eu disse, se você usa ameaças, tem que controlá-las, então não use ameaças aleatoriamente, a principal coisa
‫em que você usaria ameaças é quando você faz algo em segundo plano e faz algo
‫em primeiro plano.
‫Portanto, em primeiro plano geralmente está algo como a IU.
‫Então, quando você usa WP F ou se você usa aplicativos com Gamoran ou cria absolutismo, então tudo o que está
‫acontecendo na frente e na IU é feito pela ameaça principal e então ou pela ameaça da IU, e então
‫algo como baixar vídeos ou baixando dados em geral da Internet ou acessando dados do disco rígido
‫ou do cartão SD ou seja o que for.
‫Tudo o que pode demorar um pouco, mesmo que seja apenas alguns milissegundos ou
‫outro par, mas vários milissegundos, então isso já é algo que deve ser feito em segundo
‫plano, porque senão sua IU ficará congelada porque, bem, não está pronta para faça algo porque as ameaças estão todas
‫ocupadas.
‫Tudo bem, então isso se trata de criar pools de ameaças e, se você tem muitas coisas a fazer, pode usar pools
‫de ameaças.
‫Portanto, há várias coisas a serem consideradas ao usar pools de ameaças, então geralmente pools de ameaças estão
‫lá para executar um trabalho específico ou fazer trabalhos ou itens de trabalho específicos, e eles irão praticamente esperar até que a próxima
‫ameaça esteja pronta ou uma ameaça seja feita antes dela começa.
‫A próxima ameaça ou antes de começar com o próximo item de trabalho.
‫Portanto, essa é a vantagem dos pools de ameaças, que eles não têm tempo ocioso ou dormindo
‫onde nada acontece, porque pode haver situações em que simplesmente nada precisa ser feito com
‫sua CPU.
‫E isso é totalmente normal, porque senão seria muito pesado para a CPU se ele tivesse que rodar o tempo todo
‫e fazer coisas o tempo todo ou trabalho pesado.
‫Mas geralmente tente puxar simplesmente e diga, OK, se não houver nada ou se houver espaço suficiente para
‫executar um thread ou criar uma ameaça, farei isso e executarei o que precisa ser
‫feito.
‫As ameaças no pool de ameaças gerenciadas, a propósito, são ameaças em segundo plano.
‫Essa é a sua ameaça é pano de fundo.
‫A propriedade é verdadeira.
‫Portanto, não vimos isso antes.
‫Mas se eu criar uma ameaça assim.
‫Então aqui, deixe-me pegar essa nova ameaça daqui.
‫E se eu quiser definir isso em segundo plano, posso fazê-lo.
‫Portanto, sua formação é igual a, por exemplo.
‫Então é assim que posso definir este segmento para o seu plano de fundo e na fila neste pool de segmentos.
‫Q Existem apenas ameaças de fundo.
‫E o outro ponto a considerar é quando a ameaça de reutilização é uma ameaça, o que vimos aqui,
‫portanto, reduz a ameaça, é que vimos essa ID gerenciada de ameaça.
‫Ele foi muito reutilizado, então o pool de ameaças não apaga os dados no armazenamento local de ameaças.
‫Portanto, quando um método examina a ameaça, o armazenamento local, os valores encontrados podem ser remanescentes de um uso anterior
‫da ameaça do pool de ameaças.
‫Então, isso é algo que devemos considerar.
‫Vou compartilhar um link com você.
‫Podemos ler mais sobre pools de ameaças e em geral.