Multithreading - Controle de quantidade de threads filhas
4 respostas
B
bacamarte
Olá a todos!
Estou utilizando Multithreading na minha aplicação (uma thread mãe criando threads filhas).
Estou querendo limitar a quantidade de threads filhas que podem ser criadas… No máximo 100, por exemplo…
As thread filhas possuem um time-out de auto-destruição… Gostaria que a thread mãe ficasse sabendo quando a thread filha deixou de existir e assim atualizasse um contador…
Qual seria a melhor forma de fazer isso?
Nos não temos controle do GC no java, então eu acho que não teria como saber se a thread filha deixou de existir.
Existe algumas linguagens que possuem um método destruidor, mas parece que java não.
Oque você pode fazer é criar um metodo ‘Finalizar’ na sua thread filha e nele dar um stop na thread e atualizar o contador.
Threads não são objetos, por isso, não possuem destrutores.
Para fazer isso, o ideal seria implementar um Decorator para os Runnables, de modo que esse decorador disparasse um evento assim que o runnable iniciasse e assim que terminasse. É mais ou menos assim que o threadPool trabalha, com a vantagem de que ele ainda reaproveitar threads vivas, otimizando o tempo de criação e destruição de threads, e criando mecanismos de controles que limitam sua existência.
E
entanglement
Evite pensar em “threads” e comece a pensar em “jobs”.
O java.util.concurrent dá pleno suporte ao conceito de “jobs” - ou seja, algo que deve ser efetuado em paralelo (o detalhe de que é feito por uma thread é mais ou menos abstraído).
É a mesma diferença entre o “goto” e o “while”.