Os métodos de agendamento de threads Java são: 1. Agendamento de threads colaborativos Os sistemas multithread adotam agendamento colaborativo e o tempo de execução do thread é controlado pelo próprio thread. 2. Agendamento preemptivo de threads Usando um sistema multithread de agendamento preemptivo, o tempo de execução de cada thread será alocado pelo sistema.
O ambiente operacional deste tutorial: sistema Windows 7, versão Java 10, computador DELL G3.
1. Agendamento cooperativo de threads
O sistema multithread adota agendamento cooperativo. O tempo de execução do thread é controlado pelo próprio thread. Depois que o thread conclui seu trabalho, ele notifica ativamente o sistema para mudar para outro thread. A vantagem do multithreading cooperativo é que ele é simples de implementar, porque o thread trocará de thread após concluir seu próprio trabalho. A operação de troca é conhecida pelo próprio thread, portanto, geralmente não há problema de sincronização de thread. Suas deficiências também são óbvias: o tempo de execução do thread não pode ser controlado e se o código de um thread for escrito incorretamente e o sistema não tiver permissão para trocar de thread, o programa sempre será bloqueado.
2. Agendamento preventivo de threads
Usando um sistema multithread de agendamento preemptivo, o tempo de execução de cada thread será alocado pelo sistema e a troca de threads não é determinada pelo próprio processo. Por exemplo, em Java, existe um método Thread::yield() que pode desistir ativamente do tempo de execução, mas se você deseja obter ativamente o tempo de execução, o thread em si não tem como. Dessa forma, o agendamento de threads é implementado e o tempo de execução do thread é controlado pelo sistema. Não há problema se um thread causar o bloqueio de todo o processo ou mesmo de todo o sistema.
Acima estão os dois métodos de agendamento de threads Java. Espero que possam ser úteis para todos.