Giter VIP home page Giter VIP logo

curso-java-intermediario-loiane's Introduction

☕ Curso Java intermediário by @loiane.training

Repositório com as aulas e exercícios do curso Java intermediário da loiane.training

java-logo

Assuntos abordados:

  • Enum, autoboxing, etc;
  • Escopo de variáveis, passagem de parâmetros por referência ou valor
  • Threads
  • Manipulação de Strings e formatação de dados
  • Classes utilitárias que todo desenvolvedor deve saber usar (Datas, Locale, Math)
  • Instalação e uso de bibliotecas (jars) em projetos Java

Nível: Intermediário.


Aulas ( 📚 )


Enumeradores (Enum) ( 🔢 )

  • 01: Enumeradores (Enum)
  • 02: Enumeradores como classe (construtor e métodos)
  • 03: Enum: métodos value e valueOf
  • 04: Enum: métodos abstratos
  • 05: Correção Exercícios Enum (calculadora com Enum)

Mais Elementos básicos da linguagem Java ( 💥 )

  • 01: Wrappers: classes de tipos primitivos
  • 02: Autoboxing e Unboxing
  • 03: Importação estática (static import)
  • 04: Escopo de variáveis
  • 05: Passagem de parâmetros por valor e por referência
  • 06: Varargs
  • 07: printf
  • 08: Classes aninhadas: internas, locais e anônimas
  • 09: Annotations (Anotações)
  • 10: Garbage Collector (Coletor de Lixo)

Programação multi-tarefas: Threads( 🚦 )

  • 01: Criando Threads + métodos start, run e sleep
  • 02: Threads: Interface Runnable
  • 03: Criando várias Threads + métodos isAlive e join
  • 04: Threads: Definindo prioridades
  • 05: Threads: métodos e blocos sincronizados (synchronized)
  • 06: Threads: notify, wait e notifyAll
  • 07: Threads: resume, suspend e stop
  • 08: Threads: deadlocks
  • 09: Exercícios Aula 74: Semáfaro com Threads

Trabalhando com Strings( 🔤 )

  • 01: String: construtores
  • 02: String: concatenação
  • 03: String: extraindo chars (charAt, getChars, getBytes, toCharArray)
  • 04: String: comparação de Strings (equalsIgnoreCase, regionMatches, startWith, endsWith, compareTo)
  • 05: String: fazendo buscas (indexOf, lastIndexOf, contains)
  • 06: String: modificando uma String (substring, concat, replace, trim)
  • 07: String: modificando letras maiúsculas/minúsculas (toLowerCase, toUpperCase)
  • 08: String: juntando e separando String (join, split)
  • 09: concatenação com StringBuilder e StringBuffer
  • 10: String Tokenizer

Classes Utilitárias (Datas, Locale, Math ( 📅 )

  • 01: Classes Utilitárias
  • 02: Classe Math
  • 03: Classe Date (Data)
  • 04: Classe Calendar
  • 05: Classe GregorianCalendar
  • 06: Formatando datas com SimpleDateFormat
  • 07: Locale (internacionalização)
  • 08: Formatando datas com DateFormat e Locale
  • 09: TimeZone (Fuso Horário)
  • 10: Data no Java 8+: LocalDate, LocalDateTime, LocalTime, ZoneId, ZoneDateTime
  • 11: ResourceBundle
  • 12: Formatando Números: NumberFormat
  • 13: Formatando Números: DecimalFormat
  • 14: Trabalhando com BigDecimal e BigInteger
  • 15: Números Aleatórios (Random)
  • 16: Instalando jars no Projeto

curso-java-intermediario-loiane's People

Contributors

leticiacamposs2 avatar

Watchers

 avatar

curso-java-intermediario-loiane's Issues

Programação multi-tarefas: Threads

MULTITHREADS

  • Multitarefas: processos e threads
  • Processo é um programa que está sendo executado
  • Thread é a menor unidade de código que pode ser executada
  • Ou seja, permite ao programa executar 2 ou mais tarefas ao mesmo tempo

Exemplo:

  • Um editor de texto pode formatar um texto (ao clicar em um botão) e ao mesmo tempo pode enviar o texto para impressão

gerenciador-de-tarefas

No gerenciador de tarefas por exemplo, é possível notar que o eclipse está executando 32 serviços, ou seja tem 32 threads.


VANTAGENS

O programas são mais eficientes

ciclo-de-vida-threads

Ao criar uma nova thread é uma nova instancia, podendo deixar ela pronta para execução (estado: runnable - método: start()) quando está pronta para execução ela será executada (estado: running - método: run()) e após a sua execução ou ela termina (estado: dead) ou ela fica parada (estado: waiting - método: sleep(), wait() ou supend()) e para iniciar sua execução (estado: runnable - método notify(), notifyAll() ou resume())


QUAL ABORDAGEM É A MELHOR ?

  • Quando fazemos extends da Thread, o único método que precisa ser sobreposto é o run
  • Quando implementamos Runnable, também precisamos implementar o método run
  • Com a classe Runnable, podemos extender qualquer outra classe
  • Se não for sobrepor qualquer outro método da classe Thread, pode ser melhor usar a classe Runnable

SYNCHRONIZED

  • Sincronização é o ato de coordenar as atividades de 2 ou mais threads
  • Motivo: quando 2 ou mais threads precisam acessar um recurso compartilhado, ou somente 1 thread pode acessar o recurso por vez
  • No java usamos a palavra chave synchronized em métodos (assinatura) ou em um bloco de código

  • Uma thread A está sendo executada dentro de um método sincronizado e precisa de acesso a um recurso R que no momento está indisponível
  • Se a thread A ficar esperando por R, irá bloquear o objeto impedindo que outras threads acessem o mesmo
  • Nesse caso a melhor solução para não causar problemas é liberar temporariamente o controle do objeto permitindo que outra thread seja executada
  • wait: bloqueia a execução da thread temporariamente, ou seja, coloca a thread em modo de espera
  • a thread fica em modo de espera até que seja notificada
  • notify: notifica uma thread que estava esperando, ou seja, retorna a execução da thread
  • notifyAll: notifica todas as threads, e a que tem prioridade mais alta ganha acesso ao objeto

  • Pode ser útil suspender uma thread. Por exemplo, uma thread que mostra a hora do dia. Podemos suspender e posteriormente resumir a execução.
  • Até o Java 2 existiam os métodos suspend, resume e stop
  • O método suspend foi substituído no Java 2 por poder causar problema de deadlock
  • E como o resume não funciona sem o suspend, também foi removido
  • O método stop também foi substituído no Java 2 (deve-se usar o método interrupt no lugar)

Classes Utilitárias

São:

  • Date
  • Calendar
  • GregorianCalendar
  • Formatando Datas
  • Locale
  • TimeZone
  • Instalar jars no projeto
  • Biblioteca Joda-Time
  • Resource bundle
  • Currency (moeda)
  • Formatando números
  • BigDecimal e BigNumber
  • Random

funcoes-trigonometricas

funcoes-arredondamento

funcoes-arredondamento-2

outros

Enumeradores (Enum)

  • Enums extends a classe java.lang.Enum
  • Podem ser comparadas usando ==
  • Não podem ser instanciadas com new
  • Podem implementar interfaces
  • Pode ser declarado separadamente ou dentro de classe

Deadlock

O Deadlock pode acontecer com processos do sistema operacional e também com threads.

deadlock

Neste exemplo eu tenho 2 threads, a primeira quer usar o objeto 1 então ela vai bloquear o objeto 1 usando o syncronized mas como existe o objeto 2 e thread 2 bloqueia o objeto 2 acontece um impasse porque a Thread 1 quer usar o 2 objeto e a 2 quer usar o 1 objeto. E como as duas estão segurando os objetos, tem o deadlock.

deadlock-imagem

Ao bloquear um recurso que um processo ou outra thread quer usar é chamado de deadlock

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.