Link

Java Future/Callable.

Essa semana eu estava com um problema para resolver na aplicação que eu estou trabalhando na empresa.

O sistema precisa fazer algumas chamadas rest para consultar algumas informações.

O problema é que essa consulta pode ser chamada várias vezes para trazer a informação, teve casos onde foram feitas 50 chamadas, levando 50 segundos no total.

Para resolver esse problema, tive que utilizar processamento em paralelo, onde disparo várias chamadas e no final agrupo todo resultado.

A solução foi utilizar as features Future e Callable do Java 8.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/javaFutureCallable.html.

Link

Java variável atômica.

https://nakatech.herokuapp.com/img/works/20191215/index.jpg

As variáveis atômicas permitem utilizar operações atômicas.

As Operações atômicas são operações que sempre executam juntos e não podem finalizar incompletos.

Em Java podemos utilizar o pacote java.util.concurrent com algumas variáveis atômicas.

Utilizando as variáveis atômicas temos a facilidade de executar uma variável thread safe e deixar de marcar o método como synchronized.

Variáveis atômicas ajudam a deixar o código mais simples e legível, além de seguro quanto a thread safe.

Acesse o artigo completo em: https://nakatech.herokuapp.com/article/atomic.html.

Citação

Java syncronized.

Não é segredo que trabalhar com várias threads é algo bem complexo e deve ser trabalhado com cautela.

A palavra reservada syncronized é utilizada para garantir que todas as threads trabalhem sincronizadas.

Utilizando o syncronized em métodos, garantimos que o método só é acessado por 1 thread por vez.

Podemos utilizar o syncronized diretamente na assinatura do método ou somente no bloco do método que gostaria de sincronizar.

Em resumo, podemos sincronizar métodos de instância, métodos estáticos e blocos dos métodos.

Acesse o tutorial completo em: Nakatech.

Citação

Thread com Python.

Trabalhar com thread na maioria das linguagens é uma tarefa meio complicada devido aos problemas de deadlock.

Se você não está usando uma linguagem como Go que já tem um propósito de trabalhar com múltiplas thread’s, vai ter que ter muito cuidado principalmente se não for uma linguagem thread safe.

Lembrando que estamos falando de thread e não de multiprocessamento que são coisas diferentes.

Nas thread’s, o processamento das tarefas são paralelizadas no mesmo processador. No caso do multiprocessamento, são utilizados recursos de vários processadores da máquina.

A ideia aqui é somente exemplificar um uso simples com thread em Python.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/pyThread.html.