1. O controle do thread é muito comum.
2. Os threads têm cinco estados: criação, operação, operação, bloqueio e morte.
Criar: Crie um tópico usando o novo operador
Runable: Depois de iniciar um tópico usando o método de início, o sistema aloca recursos
Status de execução: Execute o método de execução do thread
Bloqueio: o tópico em execução para de correr por algum motivo
Estado da morte: threads termina
3. Questões de segurança dos métodos tradicionais
Os métodos Stop (), suspense (), currume (), Destroy () e Destroy () não são mais usados porque são inseguros e podem causar impasse.
4. Como controlar a operação de threads
Por exemplo, se a transferência de um arquivo levar 10 segundos, seja transferido para um certo momento e continuar até que a transferência seja concluída. Use o método para implementar o Runnable, antes de tudo, a classe Runnable para transferência de arquivos
O código é o seguinte:
A cópia do código é a seguinte:
Public Class Threadcontroltest1 implementa Runnable
{
privado int porcent = 0;
public void run ()
{
Enquanto (verdadeiro)
{
System.out.println ("Progresso da transferência:" + por cento + "%");
tentar
{
Thread.sleep (1000);
}
Catch (Exceção Ex)
{}
porcentagem += 10;
se (porcentagem == 100)
{
System.out.println ("transferência concluída");
quebrar;
}
}
}
public static void main (string [] args)
{
ThreadControltest1 ft = new ThreadControltest1 ();
Thread th = novo thread (ft);
th.start ();
}
}
5. Execute o processo de simulação de impressão de transferência de arquivos no console. Pode -se observar que, se o objeto desta classe for executado como um thread, o loop while será executado 10 vezes e depois sairá.
No entanto, você precisa pausar o thread em execução (como 1 minuto) em um determinado momento (como 5 segundos depois), mas você não pode usar as funções relacionadas ao Thread.
Para resolver esse problema, os métodos comuns são os seguintes:
1. Quando for necessário pausar, basta deixar o método de execução do tópico terminar para executar para recursos gratuitos (na verdade, deixe o tópico terminar permanentemente)
2. Quando o thread precisar continuar, um novo thread será aberto para continuar trabalhando.
Como fazer o método de execução terminar?
6. O código acima pode ser alterado para o seguinte:
A cópia do código é a seguinte:
Public Class Threadcontroltest1 implementa Runnable
{
privado int porcent = 0;
private boolean isrun = true;
public void run ()
{
enquanto (Isrun)
{
System.out.println ("Progresso da transferência:" + por cento + "%");
tentar
{
Thread.sleep (1000);
}
Catch (Exceção Ex)
{}
porcentagem += 10;
se (porcentagem == 100)
{
System.out.println ("transferência concluída");
quebrar;
}
}
}
public static void main (string [] args)
{
ThreadControltest1 ft = new ThreadControltest1 ();
Thread th = novo thread (ft);
th.start ();
tentar
{
Thread.sleep (5000);
} Catch (Exceção Ex)
{}
ft.isrun = false;
System.out.println ("Pausa por um minuto");
tentar
{
Thread.sleep (1000*60);
} Catch (Exceção Ex)
{}
ft.isrun = true;
th = novo thread (ft);
th.start ();
}
}