Iremos abordar conceitos sobre threads e criação de objetos em runtime, veremos os problemas mais comuns na implementação de threads e o que ocorre quando implementamos de forma errada uma consulta a uma base de dados. Ao final teremos pleno conhecimento para desenvolver códigos eficientes de threads manipulando dados do banco.
Para que serve
Executar consultas ou manipular dados em segundo plano sem que o usuário tenha de esperar a tarefa ser concluída para continuar utilizando a aplicação. Elaborar novos conceitos de busca a grande quantidade de dados ou até mesmo enviar informações para um banco enquanto se está fazendo outra consulta, em outras palavras, realizar conexões e operações simultâneas ao banco de dados.
Em que situação o tema é útil
Melhorar o desempenho de uma aplicação bem como melhorar sua usabilidade. Ao utilizar threads o processamento é melhor aproveitado.
Threads e banco de dados
Neste artigo será abordado um conceito diferente de trabalhar com um banco de dados. É mostrado como permitir ao usuário continuar a utilizar o sistema enquanto uma tarefa em segundo plano se encarrega de efetuar grandes inserções ou atualizações na base. Também é possível, embora pouco prático, efetuar consultas e fazer com que os resultados sejam mostrados na tela sem que haja necessidade de aguardar com que o fetch de uma query termine, por exemplo.
Com o passar dos anos uma aplicação pode se tornar cada vez mais lenta, este processo faz parte de todo o ciclo de vida de um software e sempre fará parte da vida de suas aplicações, entretanto é correto afirmar que programas com acesso a bancos de dados tendem a ter uma durabilidade menor do que os outros, isto ocorre principalmente pelo preenchimento contínuo dos dados e da velocidade de acesso a eles. É claro que se pode contornar algumas situações criando índices ou até mesmo otimizando os resultados eliminando dados desnecessários em uma consulta, mas até que ponto essa aplicação suportará? Mesmo se migrar para outra linguagem de programação ou outro banco de dados se conseguirá alcançar resultados satisfatórios?
Com o intuito de liberar o usuário a continuar utilizando a aplicação ou até mesmo para executar processos demorados pode-se fazer uso das Threads (Tarefas) que nada mais são do que rotinas sendo executadas em conjunto com o programa sem que haja a necessidade de esperar que estes processos terminem. Isto garante que o software fique liberado plenamente para que o usuário possa continuar utilizando suas funções e jamais percebendo qualquer alteração de desempenho. Quando a aplicação é executada, ela é uma thread alocada em alguma parte da memória RAM e que no sistema operacional é conhecido como “processo”. Ao observar o gerenciador de tarefas percebe-se que cada processo iniciado consome um valor x de processamento, logo, cada programa coloca-se em uma fila para que o sistema operacional possa processar seus dados e devolver as informações para continuar o processo. Um processo sempre vai possuir um PID (Process ID) e um Handle (número do processo na lista do sistema operacional).
Aplicações podem ter um ou mais processos (mais exatamente threads) tornando assim uma aplicação multitarefa. Pode-se ainda afirmar que cada thread instanciada dentro de uma aplicação ocupará uma parcela do tempo de CPU (tempo em que o CPU está processando alguma informação), o que garante que a aplicação poderá ser utilizada normalmente enquanto uma thread está sendo executada. Um dos exemplos mais práticos é a utilização de threads em jogos, onde existe um processo para o desenho das imagens, outro para o processamento de som e assim por diante. Outro exemplo muito bom é o dos programas especializados em baixar arquivos, como aceleradores de download ou programas de FTP que se utilizam de threads para permitir que o usuário continue aproveitando o programa para procurar mais conteúdo ou simplesmente para ver que algo está sendo feito e não que a aplicação tenha travado.
...