Implementando Paralelismo com Virtual Threads no Java 21

Neste exemplo, veremos como implementar o paralelismo usando Java 21. Anteriormente, para alcançar paralelismo, utilizávamos e ainda usamos o CompletableFeature, que funciona muito bem, mas ainda é um pouco verboso. Para começar, criaremos dois métodos que retornam uma String. Dentro de cada método, faremos a Thread esperar por alguns segundos para simbolizar uma operação de I/O. private static String executeTask1() throws InterruptedException { logger.info("task 1"); Thread.sleep(1000); return "task1"; } O primeiro método espera 1 segundo antes de retornar a String, e o segundo método é semelhante, também aguardando 1 segundo....

October 30, 2023 · 3 min · 439 words · Mattheus Cassundé

Reduzindo acoplamento no desenvolvimento de software

Existem vários princípios que ajudam na implementação de códigos mais desacoplados e tudo mais, aqui a ideia e exemplificar como podemos fazer isso. Exemplo Imagine que estamos implementando um código que vende jornal, teremos uma entidade que representa a Banca e outra que representa a Carteira de um cliente. Implementação acoplada public void pagaJornal(BigDecimal valorJornal, Carteira carteira){ if(carteira.getSaldo().compareTo(valorJornal) > 0){ cateira.debitaSaldo(valorJornal); }else{ // exception SaldoInsuficiente } } Nessa primeira abordagem a Banca pega a carteira do cliente verifica se tem o valor necessário e caso sim tira o valor do jornal de dentro da certeira do cliente, talvez isso não seja tão legal pois a Banca sabe muito sobre a carteira do cliente....

September 17, 2022 · 2 min · 228 words · Mattheus Cassundé

[Dica rápida de CDI] - Observando o início

As vezes precisamos executar alguns comandos quando nossa aplicação é iniciada, portanto quem usa algum framework moderno consegue saber quando sua app subiu e com o CDI não é diferente. date: ‘2022-08-30’ CDI contém uma funcionalidade de ajuda na implementação do padrão de projeto Observer. A Própria especificação usa esse padrão em suas rotinas internas, vamos usar umas dessas chamadas para observarmos quando o CDI for carregado ao levantar o servidor de aplicação, com o código abaixo fica fácil:...

August 30, 2022 · 2 min · 246 words · Mattheus Cassundé

Injeção de dependência Dinâmica

Hoje vou falar um pouco sobre injeção de dependência sob demanda. E comum encontrarmos beans ou controllers ou qualquer outra classe com várias injeções de dependências e na maioria das vezes uma boa parte dessas injeções são usadas em momentos pontuais da rotina. Quando a classe que contém esses injects e instanciada, a CDI vai se virar para criar e disponibilizar todas as suas dependências, já imaginou se em cada uma das dependências existir uma lógica no seu construtor?...

August 28, 2022 · 1 min · 198 words · Mattheus Cassundé

Qualificadores no CDI

INTRODUÇÃO Vamos começar falando um pouco sobre os qualificadores da CDI, como muitos devem saber a CDI a uma especificação JAVA que deu muito poder e extensividade a Linguagem, não vou entrar no mérito de falar sobre a especificação, apenas sobre a funcionalidade de Qualificadores. QUALIFICADORES OU QUALIFIER Imagine que temos uma interface com várias implementações, uma das utilidades dos qualifier é informarmos qual implementação vamos usar, se liga no exemplo....

August 28, 2022 · 3 min · 590 words · Mattheus Cassundé