1. Управление потоком очень распространено.
2. В потоках есть пять состояний: создание, эксплуатация, эксплуатация, блокировка и смерть.
Создать: Создайте поток, используя новый оператор
Запустить: после запуска потока, используя метод запуска, система выделяет ресурсы
Статус запуска: запустить метод выполнения потока
Блокировка: работающая нить перестает работать по какой -то причине
Состояние смерти: заканчивается нить
3. Проблемы безопасности традиционных методов
Стоп (), приостановка (), Resume (), Dissult () и Disploy () больше не используются, потому что они небезопасны и могут вызвать тупики.
4. Как контролировать работу потоков
Например, если передача файла занимает 10 секунд, пусть он будет передан в определенный момент, а затем продолжитесь до завершения передачи. Используйте метод для реализации запуска, прежде всего, класса запуска для передачи файлов
Код заключается в следующем:
Кода -копия выглядит следующим образом:
Общедоступный класс ThreadControlTest1 реализует бегство
{
частный int процент = 0;
public void run ()
{
Пока (правда)
{
System.out.println («Прогресс передачи:» + процент + "%");
пытаться
{
Thread.sleep (1000);
}
Уловитель (Exception Ex)
{}
процент += 10;
if (процент == 100)
{
System.out.println («Передача завершена»);
перерыв;
}
}
}
Public Static Void Main (String [] args)
{
ThreadControlTest1 ft = new ThreadControlTest1 ();
Потока th = новый поток (ft);
th.start ();
}
}
5. Запустите процесс моделирования переноса файла на консоли. Можно видеть, что если объект этого класса запускается как поток, цикл while будет выполнен 10 раз, а затем выйдет.
Тем не менее, вам нужно сделать паузу, работающую (например, 1 минуту) в определенный момент (например, через 5 секунд), но вы не можете использовать связанные с ними функции.
Чтобы решить эту проблему, общие методы заключаются в следующем:
1. Когда необходимо сделать паузу, просто позвольте методу запуска потока запустить свободные ресурсы (на самом деле, пусть поток навсегда заканчивается)
2. Когда поток должен продолжаться, будет открыт новый поток для продолжения работы.
Как сделать метод пробега заканчиваться?
6. Приведенный выше код можно изменить на следующее:
Кода -копия выглядит следующим образом:
Общедоступный класс ThreadControlTest1 реализует бегство
{
частный int процент = 0;
Частный логический isrun = true;
public void run ()
{
пока (Исрун)
{
System.out.println («Прогресс передачи:» + процент + "%");
пытаться
{
Thread.sleep (1000);
}
Уловитель (Exception Ex)
{}
процент += 10;
if (процент == 100)
{
System.out.println («Передача завершена»);
перерыв;
}
}
}
Public Static Void Main (String [] args)
{
ThreadControlTest1 ft = new ThreadControlTest1 ();
Потока th = новый поток (ft);
th.start ();
пытаться
{
Thread.sleep (5000);
} Catch (Exception Ex)
{}
ft.Isrun = false;
System.out.println («Пауза на одну минуту»);
пытаться
{
Thread.sleep (1000*60);
} Catch (Exception Ex)
{}
ft.isrun = true;
th = новый поток (ft);
th.start ();
}
}