Olá pessoal,
Estavamos falando sobre thread hoje aqui no trabalho e fiquei na dúvida. Será que se usar bastante thread no sistema em diferentes situações, ele fica melhor, mais estável ou mais rápido? Por exemplo, um simples clique no botão para fazer um cadastro, será que seria legal usar thread? Qual a opinião de vocês?
Abraços.
Sim, não e talvez. Depende realmente do que seu “clique no botão” irá fazer. Se ele simplesmente mudar um valor de uma caixa de seleção, não vale a pena. Se ele mandar uma requisição assíncrona a um serviço de mensageria, é indispensável e se ele fizer um trabalho direto com banco de dados, talvez. Dei 3 exemplos de como perguntas esparsas aceitam múltiplas respostas.
Até!
Acho que depende muito da construção do seu sistema. Pense que cada thread vai ocupar um espaço no processador que poderia estar alocado a thread principal do sistema. Além disso, recursos compartilhados teriam um controle de concorrência que levaria uma thread a esperar pela outra acabar. Lembre tambem do trabalho de implementar tudo isso para evitar deadlocks.
Cara…o ideal é usar thread sempre que o programa precisar processar algo que não tenha exatamente ligação com o processamento atual. Por exemplo, se vc tem um painel de cadastro…o ideal é que o cadastro seja feito em thead, primeiro pq se o banco ficar lento não vai travar seu aplicativo…segundo pq vc pode monitorar e animar a tela com um jprogressBar…oq torna sua aplicação mais atraente…
Mais uma dica…para trabalho com swing use sempre SwingWorker, ele é próprio para trabalho com aplicações swing e garante que a tela não congele…e ainda vc pode deixar processando enqt mexe em outras coisas…segue um trecho de implementação de exemplo:
jProgressBar1.setVisible(true);
SwingUtilites.invokeLater(new Runnable() {
public void run() {
SwingWorker worker = new SwingWorker() {
protected Void doInBackground() {
Connection conn = conexao.getConnection();
try{
PreparedStatement stm = conn.prepareStatement("insert into cadastro values('1', 'nome', 'cidade')");
stm.executeUpdate();
stm.close();
conn.close();
} catch(SQLException ex) {
ex.printStacTrace();
}
return null;
}
protected void done(){
jProgressBar1.setVisible(false);
}
};
worker.execute();
}
});
Desculpe se conter algum erro no código…fiz de cabeça…Espero ter ajudado
Cara tome cuidado com isso, utilize threads somente se seu sistema possuir um modolo que precise ser executados simultaneamente com outros, um exemplo, fechamento de conta bancária, existem 1000000 de contas quando o banco faz o fechamento dessas contas ele utiliza threads para agilizar o servico, agora se vc vai fazer algo digamos “procedual” como clicar no botão para fazer algo, não tem sentido algo, a não ser q ue vc queria perder performance, imagine um clique no botao sem thread vc clica e é executado o pedido, agora com thread vc clica, entra na outra thread ai sim executa a ação, fez um caminho sem a menor necessidade.
Lembrando que seus programas sempre utilizam threads, nem que seja uma apenas.
Abraços
Valeu pela ajuda galera. Hoje eu vou brincar com thread pra me aprofundar mais no assunto e depois disso vou começar a englobar isso nos meus sistemas.
em um mundo onde o processamento está crescendo para os lados (vide os processadores multi-nucleo da intel, como o core 2 duo) e nao mais para cima (ou seja chegamos no chamado muro de potencia), muitas pessoas já estão começando a questionar se suas aplicações tiram proveitos desse multi-nucleos e a reposta para isso vem da programação paralela.
Em suma aprender threads agora pode em um futuro mais ou menos próximo te deixar mais familiarizado com o desenvolvimento de sistema, porque não é todo mundo que pode bater no peito e dizer que sabe usar programação paralela.