ACELERANDO seu CÓDIGO! Introdução a MULTITHREAD com JAVA!

13.14k views3096 WordsCopy TextShare
RinaldoDev
O Java possui INÚMERAS formas de lidar com Threads, Paralelismo, Concorrência, Multithread, etc! Nes...
Video Transcript:
e fala pessoal Rinaldo aqui mais uma vez e hoje a gente vai falar sobre multi-threaded com Java Na verdade eu vou começar a falar sobre esse assunto porque é uma série de vídeos que eu tô começando com esse aqui para quem está acostumado com meus vídeos antigos vai ver e para um formato um pouquinho diferente porque esse primeiro vídeo eu vou fazer uma breve introdução que vai ter alguns slides na verdade aqui eu quero só passar um pouquinho de conceito e mesmo que você já conheça algo sobre nos pede eu ainda sim assim aconselho que
você veja esse vídeo que o que eu vou falar sobre o moço prédio de uma forma um pouco diferente do que outras pessoas costumam falar pelo menos cinco olhando no mundo Java hoje e olhando como que a gente usa o multi-threaded Então eu acho que eu vou apresentar esse conjunto de coisas um pouquinho diferente do que você já está acostumado então mesmo que você já conheça sobre o que você fique por aqui aí o fato assim eu sei que não é tão legal quanto os outros que tem código né Eu já começa mostrando o código
e tal mas esse vídeo aqui não vai ser tão comprido e essa assim eu vou dar uma base conceitual importante tá então assim comece por esse aqui depois vai ter aí mais alguns vídeos na série eu não sei ainda exatamente quantos mas não é 6 8 10 vídeos talvez falando sobre alguns prédios e as várias formas de você fazermos prédio com Java E aí esses vídeos vão ser só código mesmo tá então fica por aqui nesse daqui eu sei que é apresentação não é tão legal alguns códigos mais vai se importante bom então vamo eu
vou começar aqui falando sobre execução mão atrás de execução multi-threaded qual a diferença é toma introdução Zinha para assim quem nunca viu nunca trabalhou com ele tá é basicamente sexual monocled a forma como todo mundo começa a aprender programação que é o que você faz lá o seu trecho de código e você sabe que Primeiro vai ser executado a linha um depois da linha dois depois é né daí por diante Então essa forma quando tá aqui é a forma como assim geralmente o seu código vai ser executado quando você tá lá no começo né você
tá fazendo ali seus primeiros escritos e tal ou até mesmo né E se você já está trabalhando profissionalmente a gente sabe que na maioria das vezes a gente está pensando no código de forma humana prédio mesmo que na prática ele não sei a gente acaba colocando ele na nossa cabeça dessa forma né encher enxergar execução da linha um depois da linha 2 e aí Pois então eu queria sim separar um pouco o monothread que é o que a gente costuma ver talvez Alguns vão dizer que isso aqui na verdade a execução sequencial não é o
monotrilho é demais eu não quero entrar nesse detalhe nesse momento tá é só para esclarecer para quem assim tá chegando agora e a multi-threaded O que poderia acontecer numa execução amores prédio eu poderia ter duas execuções em paralelo acontecendo em paralelo Ou talvez não no mesmo instante mas olha só o que poderia acontecer é eu a linha um dessa primeira execução depois executou na2e antes de Executar a linha três o processador resolvi parar executar esse cara que começa a executar Espero que ele executaria um dessa outra opção aí ele pode resolver voltar para cá Executar
a minha três dessa primeira execução E aí assim ele pode ficar trocando né assim decidindo quantas linhas ele vai executar de cada código meio e por conta própria né as vezes a gente não tem muito controle disso mas essa seria make A ideia é base de multitrend assim pelo menos para você ter uma noção do que pode acontecer E por que que eu tô aqui fazendo uma serve só para falar disso é algo que é um pouquinho mais complexo é um pouquinho mais difícil da gente enxergar ocorre me fazendo isso na nossa cabeça e que
a gente tem que pensar sabe na execução pulando de um lado para o outro isso fica um pouco mais difícil adiantar na nossa cabeça mas eu pretendo aqui com essa série de vídeos consegui mostrar para eu é que não é tão difícil assim de entender que dá para a gente ir né começar a enxergar o código sendo executado dessa forma mais do que isso Qual é a utilidade Quando é que a gente usa né coisas nesse vão já que a gente vai falar sobre paralelismo e concorrência são duas palavras que a gente usa toda hora
quando vai falar de execução mostradi eu quero deixar claro aqui assim um pouco mais claro Qual que é a diferença entre esses dois carros tá então sim roda a gente fala de paralelismo ele que eu tô falando eu tô falando de executar vários trechos de código ao mesmo tempo isso só é possível quando eu tenho por exemplo um processador com mais de um núcleo aí eu consigo ter paralelismo tá então eu vou ter um trecho de código executando ao mesmo tempo que outro trecho de código está executando no mesmo instante no no mesmo momento eu
tenho dois núcleos de processamento três quatro quantos cores executando trechos de código do meu programa e ali livro A outra coisa é a concorrência O que é a concorrência é quando eu tenho mais de um trecho de código sendo executados é e ele está concorrendo pelo mesmo recurso e isso quer dizer pode ser uma variável por exemplo ou uma constante ou uma acesso ao banco de dados qualquer recurso que eu tenho duas execuções querendo acessar durante o mesmo é durante o mesmo processo então mesmo que eu não tenho a paralelismo eu posso ter concorrência por
exemplo no que eu não exemplo está Acabei de idade de mostruário imagina que eu tenho dois programas são executados e aí o primeiro executaria um depois do segundo executarem a 1 depois você primeiro executarem a dois né E vai acontecer nessa troca né Eu só tenho um núcleo e o núcleo ele tá trocando esse entre entre as execuções a um pedacinho do tempo executando a primeira e outro pedacinho de tempo que tá na segunda ele fica trocando o mesmo nesse cenário eu consigo ter concorrência o que eu posso ter por exemplo uma variável que está
sendo acessado pelos dois não no mesmo instante mas aqui na linha 2 o acesso vai depositar o senhor vem para cá na linha 2 acesso essa mesma variável então isso seria a concorrência e o paralelismo posso ter Sem concorrência na eu posso ter paralelismo onde eu tenho dois trechos de código sendo executados mas eles não estão correndo pelo mesmo recurso então é o paralelismo tá olhando muito mais parece ideia de Quantas coisas estão executando ao mesmo tempo no mesmo instante e eu só consigo fazer isso tendo mais de um ou não não consigo não executar
vários prédios ao mesmo tempo a gente até acho que para tudo sendo executado ao mesmo tempo mas lá dentro do processador Ele só tem um núcleo que você tá fazendo uma coisa de cada vez né e a concorrência não há concorrência quando eu tenho recursos que estão sendo acessados por mais de uma execução ao mesmo tempo esse recurso o nado pode ser um pouco estados pode ser uma chamado disco Não importa eu tô tendo uma concorrência no acesso alguma coisa em geral dentro do código essa concorrência vai se tratar de uma variável uma lista de
um mapa qualquer coisa nesse sentido mas não sei totalmente é bom a gente separar essas duas coisas beleza bom um aviso importante para quem já programa em Java mais tempo e é programador web né então programa ali com sprint com quartos para de voz para onde Fly se você programa aplicação web usando algum Framework ou rodando sua aplicação dentro de um servidor Nesse estilo aqui Talvez algumas das coisas que eu vou mostrar não sejam boas de serem feitas dentro dessas aplicações em conjunto com esse servidores ou com esses prêmios por quê Porque muitas vezes eles
têm formas próprias de lidar com coisas é né de você iniciar é várias execuções ao mesmo tempo né Então muitos deles tem comissões próprias para isso então não é que não vai ser útil para você pelo contrário não é o os vídeos que eu vou colocar aqui na série eles vão entrar um pouco conceitualmente nessa parte de paralelismo e eu vou usar o código né as ferramentas que o Java tem que eu te mostrar como que é isso na prática Então você vai entender como funciona a execução dos prédios paralela EA concorrência e etc e
todos esses conceitos que você vai aprender enxergando o código fazendo isso vão ser úteis independente onde você for aplicar até em outras linguagens de né só Nem sendo já mas quando você for de fato aplicar isso desenvolvendo para web preste atenção naquilo que você tá usando se você tá usando Springer por exemplo vai ver se o Spring não tem algo específico para você trabalhar como os prédio concorrência com Brasi é o quarto da mesma coisa então entra um pouquinho no mundo de cada um desses servidores e fremax para você entender se faz sentir em você
aplicar eu vou mostrar exatamente da forma como vou mostrar Às vezes você só vai ter que aplicar o mesmo conceito mais usando não é uma ferramenta é diferente e outra coisa que eu queria separar aqui também para a gente também assim de novo eu tentando deixar claro tudo que eu vou falar porque mostrar ele não é um assunto Simples então eu tô deixando assim tudo bem bem especificados a parte de cima que que eu tô explicando E ontem que eu tô entrando eu sei que às vezes é difícil a gente entender e conseguir separar as
coisas na nossa cabeça tá então eu tô tentando separar cada arrumando as coisinhas que a gente vai falar então quando a gente vai falando de programação paralela de concorrência de mostrar AD eu tenho uma outra coisinha que a gente também tem que prestar atenção O que são os algoritmos que são feitos de forma sequencial mas que tem múltiplas execução e são uma forma de paralelismo e isso é que seria um exemplo próximo de palavras bonita né é uma aplicações web em geral entram aqui tá nesse nesses corpo eu faço um um algoritmo para eu falo
receber uma requisição resto por exemplo qualquer tipo de requisição que eu recebo o implemento um código que faz aquilo tudo que vai no banco etc Biel mas é consequencial tá só que ela executada nos duas vezes é seu código o céu tem por exemplo mil usuários usando aquela aplicação e chamando o mesmo serviço rest a mesma chamada http eu posso exemplo aquilo lá vai estar sendo executado de forma paralela tá então aquele ambiente por isso que são Paralelos tem o paralelismo eu tenho multi-threaded no sentido de que eu tenho várias tragédias sendo executados ao mesmo
tempo é aquilo ali eu mostrei tem vários prédios executar o número do tempo mas não é disso que eu quero falar aqui está porque aquilo ali é uma execução amostrage que você não se preocupa com o stress né E que geralmente o seu código ele é sequencial e você não tem a preocupação com a concorrência você não tem preocupação se você tem uma variável que está sendo acessado por mais de um usuário ao mesmo tempo porque cada um meio que tem a sua linha de execução né sua requisição ali fechadinha então eu não quero entrar
muito nesse nessa Seara diz assim é de coisas que estão sendo executado em paralelo mais que já são isolados né Isso daí não é muito preocupante isso Geralmente os freios resolvem para você ou servidores então eu não tenho nem muito o que acrescentar nesse aspecto o que eu quero falar aqui é da parte de baixo aqui são os algoritmos e esperam o paralelismo a concorrência do mês o mesmo trecho de código então é quando geralmente o programador você vai ter que se preocupar com esse paralelismo ou com essa concorrência né você vai ter que preocupar
se as variáveis que estão ali e vão ser acessados por mais de uma tragédia ao mesmo tempo e aí vai gerar essa concorrência A então eu quero focar nessa ideia da concorrência ou de Quando aconteceu o paralelismo como quando que você tem o controle de si paralelismo Quando que você manda iniciar várias execuções ou você manda executar na três prédios duas prédios para a primeira a executa por tanto tempo e quando essas coisas forem acessar recursos na disputar pelo mesmo recurso que é a parte da concorrência então deixar bem separado isso tá aplicações web em
geral nós somos prédio por natureza né Assim você vai fazer a sua aplicação é do lá ela vai ser muito prédio né vai ter um monte de requisição chegando mas não é disso que eu quero o que propriamente estava querendo entrar na parte onde você vai ter que fazer um algoritmo é onde você vai usar o paralelismo onde você vai controlar quantas tragédias estão sendo criados e você vai ter que se preocupar com a concorrência entre essas coisas tá é muito diferente do que acontece nos prédio natural de aplicações web Onde tem um monte de
usuário executando coisas ao mesmo tempo bom então quando que você geralmente vai usar o que eu vou apresentar aqui né No final das contas se não é para usar aplicação web Quando que você ou você pode até usar em aplicações web quando a gente vai falando do primeiro e tem aqui que são processos Betty que é o que eu processamento em lote né geralmente são aqueles processos que demora mais tempo que ficam executando por mais tempo sempre que você tiver um processo PET Assim lote onde você vai inicialmente tem uma grande carga de dados não
importa da onde esses dados tá pode ser do banco de dados Pode ser que uma e pode ser uma requisição que você vai fazer meio que não importa sempre que você tá falando de ter uma grande carga de dados que você tem que fazer um processamento pesado em cima disso e depois gerar um resultado salvar em algum lugar né alguma coisa nesse sentido é muito útil você conhecer essas técnicas de paralelismo né então aqui você assim vai acabar aprendendo um pouco mais a programar de forma mais eficiente né de cima do seu código de fato
render mais porque você vai começar a aprender como usar o paralelismo para processar uma quantidade grande de dados né então é esse é um ponto assim que eu quero que que essa série que te ajude muito e esse interessante você saber fazer esse tipo de algoritmos tipo de processo implementada melhor forma possível e sabendo lidar com paralelismo com concorrência você vai saber lidar com essas situações muito melhor beleza e o o que faz aplicações que executam o cliente aplicações coisa que eu tô no cliente no celular né no desktop etc elas também podem tirar vantagem
dessa parada dizendo que eu vou mostrar aqui de novo se você usa um frame específico para lidar com seu processamento em batch processamento em lote ou se você usa um formato específico para sua aplicação das top ou para o celular por exemplo procure saber se esse frango que já não tem alguma coisa para facilitar sua vida tá então talvez você tem que misturar um pouquinho que eu vou mostrar aqui com que esse frango aqui vai trazer né geralmente o que acaba acontecendo é se eu tenho que ir conhecer os conceitos que eu vou apresentar E
aí depois pegar e aplicar isso da forma específica que o frango que vai não te pedi para usar geralmente é isso que acontece então assim o que eu vou falar nessa série de vídeos é especialmente para você usar em processos Bet em aplicações que roda no cliente e talvez você precisa usar em outras ações mas eu vou acabar dando foco mais para isso bom então a gente vai começar com as aulas práticas né todos os próximos vídeos vão ser com óleo mesmo tá do jeito que assim para quem já está acostumado com os vídeos sabe
como é que é é cobrando ir explicando e mostrado exemplificando tá não tem não vou essa parte aqui de apresentação foi só para fazer essa esse primeiro esclarecimento Porque como assunto ele é um pouco mais pesado assim eu quero que esteja bem claro tá então aulas práticas daqui para frente a Playlist vai tá aí na descrição né Para você seguir eu vou postar os vídeos aos poucos aí para vocês verem seguindo e tem uma novidade que agora eu estou com duas formas de você apoia ao canal então se você já conhece o canal se você
nem acabar assistindo aqui essa playlist tirando proveito desse conteúdo e aprendendo eu tô aqui com duas formas você é o canal eu pedi bem eu após os links estão aí na tela mas eu vou botar na descrição tá e se você achou interessante essa série se você tá interessado né se você tem algum assunto que você gostaria que eu abordasse né que você não sabe ainda se eu vou falar deixa um comentário se você gostou desse vídeo deixando contigo e se você quiser ficar sabendo sempre que sair uma nova o novo vídeo dessa série aqui
dessa playlist ou de alguma outra já se inscreve no canal e ativa o Sininho aí você receber as notificações dois eu vou fazer depois um vídeo mais específico falando dessa parte do apoio mas se você puder eu peço para que você apoia aqui o canal todo esse conteúdo gratuito e eu quero que continue assim para poder ajudar cada vez mais pessoas né ensinar a cada vez mais pessoas é esse Valeu pessoal falou e até o próximo vídeo para vocês estão aí a Playlist com as aulas práticas valeu e E aí [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com