Questões de detalhes multithread
Similaridades e diferenças entre o método do sono e o método de espera?
Semelhanças:
Deixe o fio em um estado congelado.
Diferenças:
O sono deve especificar o tempo
Espera pode especificar tempo ou não
O tempo de sono acabou, o tópico está em um estado de bloqueio temporário ou estado de corrida
Se a espera não tiver tempo, deve ser despertado por notificar ou notificar todos
O sono não precisa ser definido em sincronização
espera deve ser definido em sincronização
Quando todos são definidos em sincronização
Sleep libera direitos de execução, não bloqueios
Espere para liberar direitos de execução, bloqueio
sysCronized (obj) {wait (); // 0 1 2 código ...} SysChronized (obj) {notifyAll (); // Código 3 ...}Como parar um tópico
Método de parada
O método de parada está desatualizado. Descobri que existem outras soluções depois de ler a descrição.
Fim do thread: deixe o código da tarefa de thread ser executado e o método de execução termina
Como encerrar o método de execução?
Definindo um loop
Nota: Ele ainda pode julgar a marca se o tópico estiver em um estado congelado na tarefa?
O chamado estado de interrupção não significa interromper o thread.
O estado de interrupção de interrupção causa se o thread de destino aguardar muito tempo, o método de interrupção deve ser usado para interromper a espera pela chamada interrupção é não parar o thread.
A função da interrupção é limpar o estado de congelamento do encadeamento e restaurar o estado em execução para o encadeamento (deixe o thread re-qualificar para a execução da CPU).
Por ser obrigatório, haverá uma exceção interrompida e você poderá capturar exceções no Catch.
No manuseio de exceção, altere a marca para encerrar o loop e deixe o método de execução terminar.
Thread Daemon
Tópico de daemon: Também pode ser entendido como um thread de fundo e os threads de primeiro plano criados antes são todos os threads de primeiro plano.
Enquanto o thread chama SetDaemon (true); O fio pode ser marcado como um fio daemon.
Os threads de fundo do front-end são os mesmos ao executar, obtendo os direitos de execução da CPU.
Somente quando termina é um pouco diferente.
O encadeamento em primeiro plano deve terminar através do método de execução e o thread deve terminar.
O encadeamento de segundo plano também pode terminar com o método de execução e o thread termina. Há outra situação.
Quando todos os threads de primeiro plano no processo terminarem, não importa em que estado o encadeamento de segundo plano esteja, ele terminará e o processo terminará.
O processo termina com os fios de primeiro plano dependem.
Prioridade do tópico
Prioridade do tópico: identificado por números, 1-10
Entre eles, a prioridade inicial padrão é 5 e os níveis mais óbvios de três prioridades são 1, 5 e 10.
setPriority (Thread.max_priority);
Grupo de threads
Grupo de thread: ThreadGroup: O grupo de threads ao qual o novo objeto Thread pertence pode ser identificado através do construtor de threads.
Os benefícios dos grupos de threads são que eles podem executar operações unificadas em vários threads no mesmo grupo.
Por padrão, todos pertencem ao grupo de threads principal.
Classe interna anônima
Runnable rn = new runnable () {public void run () {}}; // o código acima é equivalente a intemmentos anomímicos de classe runnable {public void run () {}} runnable rn = new anomymous ();Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!