AGENDE seu código para executar QUANDO VOCÊ QUISER com EXECUTORES!

  Рет қаралды 2,224

RinaldoDev

RinaldoDev

Күн бұрын

Пікірлер: 13
@evertondasilvaserafim508
@evertondasilvaserafim508 4 жыл бұрын
Excelente, agente vsi conhecendo ainda mais a grandesa da linguagem. Muito bom mesmo.
@alanbidu1
@alanbidu1 3 жыл бұрын
Aprendendo muito!!
@arthurdiego8022
@arthurdiego8022 3 жыл бұрын
Opa boa tarde, até agora conteúdo muito bom, senti falta de você falar do "work-stealing thread pool" ele é muito interessante
@rinaldodev
@rinaldodev 3 жыл бұрын
Fala, Arthur! Eu tenho um vídeo sobre o fork/join nessa playlist, mas nunca lancei, porque ele não ficou muito bom. Tenho que refazer para publicar. ;)
@arthurdiego8022
@arthurdiego8022 3 жыл бұрын
@@rinaldodev recentemente passei por uma situação de importar uns dados (90 milhoes em csv, em várias tabelas diferentes fazendo um bacth de 5000 para cada inserção) eu usei o poolFixed(10) para parelilizar as inserções chamando varios serviços respectivos de suas entidades, porém o processo parecia ser intermitente, usamos kubernets como cluster, aumentei o cpu do pod para 4 mas, no poolFixed ele tinha um comportamento, hora rápido, hora de devagar (As vezes ele pega mais CPU, na maioria das vezes não, era como se fosse sorte), daí fiquei acompanhando a memoria e CPU, quando tava lento não passava de 1.2 CpU, eu não conseguia utilizar os 4 CPU que coloquei no POD, fiz um teste novamente usando o workStealingpool e aparentemente ele forçou mais o uso das CPU, pra você ter uma ideia o processo todo quando tava lendo foi 10 horas.., quando ele usava 2 > CPU ele caia pra menos de 3 horas, eu andei estudando aqui o uso desse algoritmo, mas ñ entendi a fundo, o q deu pra entender foi q ele "rouba" tasks ociosas de outro CPU para outro CPU e começa a executar.. e aparentemente isso força o uso de CPU. Bem foi isso q entendi.
@rinaldodev
@rinaldodev 3 жыл бұрын
Provavelmente suas threads estavam ficando ocupadas com I/O, e por isso não estavam usando CPU. Você pode colocar inúmeras threads, mas se elas travarem fazendo muito uso de I/O, elas podem não usar todos os núcleos disponíveis. Imagino que quando você fez essa modificação, acabou diminuindo ou acelerando o uso de I/O. Não saberia dizer exatamente o porquê sem olhar o cenário específico, mas esse é meu chute. Mas realmente é algo que posso acrescentar na Playlist, é um bom assunto e rende bons exemplos. :)
@arthurdiego8022
@arthurdiego8022 3 жыл бұрын
@@rinaldodev eu vi um algoritmo usando a classe ForkJoin, de fato ele empilha as chamadas e depois força a sincronização das threads, no final do método chamador( o primeiro método a foi colocado na pilha,) dai ele sai fazendo isso para os demais métodos empilhados, e ele conseguiu usar todas as cpus, nesse caso eu usei meu notebook pessoal, o algoritmo consistia em ficar lendo e buscando arquivos com determinadas extensões, enquanto houvesse diretório, então nossa classe task(q executava o algoritmo) extends RecursiveTask e ficava chamando ela msm até varrer todos os diretórios, no fim ela retornava oq achou nome do arquivo e quantidade de arquivos, uma chamada devolvia pra outra chamada o retorno até chegar no primeiro item da pilha que foi oq chamou. Recursão é bem complexo, fiquei algumas horas tentando entender kk, principalmente pq cada chamada recursiva ele criava uma thread nova, e esse algoritmo de workSteal parece q foi feito pra isso. Funcionou muito bem.
@fdacio
@fdacio Жыл бұрын
Rinaldo, dá pra usar no no sdk do android?
@rinaldodev
@rinaldodev Жыл бұрын
Dá sim. Na documentação do Android tem: 1) uma sessão específica sobre executor service: developer.android.com/reference/java/util/concurrent/ScheduledExecutorService 2) uma específica sobre background tasks: developer.android.com/guide/background?hl=pt-br
@Liv.Junior
@Liv.Junior 2 жыл бұрын
como executar numa determinada data?
@rinaldodev
@rinaldodev 2 жыл бұрын
Não foi feito pra isso :)
@Liv.Junior
@Liv.Junior 2 жыл бұрын
Deveria rever o título deste vídeo então !
@RinaldoPitzerJunior
@RinaldoPitzerJunior 2 жыл бұрын
@@Liv.Junior pode assistir o vídeo em 1:22 também, onde eu explico o "tipo de agendamento" :)
Beans CDI e TESTE de API REST com o QUARKUS!
26:11
RinaldoDev
Рет қаралды 7 М.
The Best Band 😅 #toshleh #viralshort
00:11
Toshleh
Рет қаралды 22 МЛН
The evil clown plays a prank on the angel
00:39
超人夫妇
Рет қаралды 53 МЛН
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН
Python? Java? Rust? Qual a Diferença? | Discutindo Linguagens
49:14
Senior Developers vs. Junior Developers, What's The Difference?
14:21
Continuous Delivery
Рет қаралды 41 М.
Usando várias branches no GIT e GITHUB!
41:09
RinaldoDev
Рет қаралды 4,1 М.
QUARKUS com HIBERNATE, PANACHE,  TRANSAÇÕES e DEVSERVICES!
26:40
Comece AGORA a aprender GIT e GITHUB!
34:37
RinaldoDev
Рет қаралды 3,1 М.
Preparando sua aplicação QUARKUS para produção!
27:07
RinaldoDev
Рет қаралды 5 М.
COMO TIREI A CERTIFICAÇÃO JAVA 11
12:38
RinaldoDev
Рет қаралды 13 М.
Começando a usar o QUARKUS!
21:52
RinaldoDev
Рет қаралды 24 М.
The Best Band 😅 #toshleh #viralshort
00:11
Toshleh
Рет қаралды 22 МЛН