Programação  
 
Conhecimento computador >> Programação >> Programação em Java >> 
Como encontrar um Thread Java em tempo de execução
A arte de encontrar tópicos em tempo de execução envolve duas classes Java , linha e ThreadGroup . Além disso, você deve se lembrar de citar seu segmento ao criá-lo . Caso contrário, se você não nomear o seu fio, você está contando com o mecanismo de nomenclatura padrão para tópicos construídos em Java, e enquanto você pode ser capaz de adivinhar o que o nome do thread deve ser, não há nenhuma garantia de que vai ser o mesmo nome em todas as plataformas de tempo de execução e versões de Java. Coisas que você precisa
Java Runtime Environment versão 6 ou superior
Show Mais instruções
1

Crie a estrutura para uma classe de aplicativo Java chamado "Find ". Basta fornecer um método main vazio () como o ponto de partida.

Public class Pesquisa {

public static void main ( String args [] ) { }


}
2

Crie um objeto Runnable e rosca de modo que você tem algo a descobrir . Nomeie o thread " Sleeper " , proporcionando um segundo argumento para o construtor Thread, onde o primeiro argumento é a referência Runnable . Depois de criar o Thread, iniciá-lo chamando o método start () . O código a seguir começa a definição do método main () agora vazio :

corredor Runnable = new Runnable () {

public void run () { try {


Thread.sleep ( 50000 );

} catch ( InterruptedException e) {

//ignorar

}

} < br >

};

Passe t = new thread ( corredor, " Sleeper ");

t.start ();
3

encontrar o fio com a ajuda de ThreadGroup . Todos os tópicos pertencem a uma ThreadGroup . Esses grupos se sentar em uma árvore onde todos os grupos possuem um nó pai (e nós filhos ), exceto para a raiz da árvore , que não tem pai. Assumindo que a linha para encontrar não está na ThreadGroup do segmento atual , caminhar até o topo da árvore , olhando para pai do grupo. Dessa forma, quando você vai para encontrar o fio " Sleeper " , você vai saber que você encontrou-o desde os tópicos ativos serão filhos do segmento pai suserano .

Tópico currentThread = Thread.currentThread ( );

ThreadGroup grupo = currentThread.getThreadGroup ();

while ( group.getParent () = null) {

grupo = group.getParent (); !

}
4

Use o enumerate ( método ) de ThreadGroup para agrupar todas as crianças tópicos deste pais super. O método armazena os tópicos ativos em uma matriz

int activeCount = group.activeCount (); .

ActiveThreads Tópico [] = new Thread [ activeCount 5 ];

int actualCount = group.enumerate ( activeThreads );
5

Use a matriz activeThreads para ajudar a encontrar o fio que faltava - aqui , a um marcado " Sleeper ". Uma vez encontrado , use o método () para fornecer um stacktrace do fio DumpStack :

Tópico encontrado = null;

for (int i = 0; i < actualCount ; i + +) {

if ( " Sleeper " é igual a ( activeThreads [i] getName ()). . ) {

encontrado = activeThreads [i] ;

break;

} }


if ( encontrado = null !) {

found.dumpStack (); }


6

Como a linha de fechamento para o método main (), dizer ao sistema para sair da memória :

System.exit (0);
7

Compilar e executar o programa . Enquanto os números de linha no rastreamento de pilha pode ser um pouco diferente com base em coisas como estilo parênteses , todos eles devem fornecer o mesmo resultado geral

java.lang.Exception : . Rastreamento de pilha

em java . lang.Thread.dumpStack ( Thread.java 1206 )

em Find.main ( Find.java : 31)

Anterior :

Próximo : No
  Os artigos relacionados
·Como construir uma String & Definir o texto com a strin…
·Como devolver um ritmo cardíaco em Java 
·Mesmo função em Java 
·O Método redonda em Java 
·Como fazer tipos de dados enumerados no Java 
·Como verificar se uma string é numérica com Java 
·Como escrever um programa Java para estimar sua idade e…
·Como instalar Hermes 
·Java Manipulação de Strings para converter uma String…
·Como Chegar Java Direito de Trabalho sobre XP 
  Artigos em destaque
·Como fechar Web User Control 
·Como criar texto para Direct3d C + + 
·Java Duplo Formatação 
·Passo-a- Passo para a execução de um emulador Android…
·Como usar o HTTP Compression e Coldfusion 
·Como usar amigo funções em C + + 
·O que é um Looping em Java 
·Como Chegar Sistema Datas em COBOL 
·Como inicializar parâmetros de entrada nos procediment…
·Como mostrar imagens em um Silverlight Datagrid 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados