В классе Thread определены три поля, несколько конструкторов и большое количество методов, предназначенных для работы с задачами. Ниже мы привели краткое описание полей, конструкторов и методов.
// Текущее количество активных задач в группе, к которой
// принадлежит задача
public static int activeCount();
// Текущей задаче разрешается изменять объект Thread
public void checkAccess();
// Определение количества фреймов в стеке
public int countStackFrames();
// Определение текущей работающей задачи
public static Thread currentThread();
// Принудительное завершение работы задачи
public void destroy();
// Вывод текущего содержимого стека для отладки
public static void dumpStack();
// Получение всех объектов Tread данной группы
public static int enumerate(Thread tarray[]);
// Определение имени задачи
public final String getName();
// Определение текущего приоритета задачи
public final int getPriority();
// Определение группы, к которой принадлежит задача
public final ThreadGroup getThreadGroup();
// Прерывание задачи
public void interrupt();
// Определение, является ли задача прерванной
public static boolean interrupted();
// Определение, выполняется задача или нет
public final boolean isAlive();
// Определение, является ли задача демоном
public final boolean isDaemon();
// Определение, является ли задача прерванной
public boolean isInterrupted();
// Ожидание завершения задачи
public final void join();
// Ожидание завершения задачи в течение заданного времени.
// Время задается в миллисекундах
public final void join(long millis);
// Ожидание завершения задачи в течение заданного времени.
// Время задается в миллисекундах и наносекундах
public final void join(long millis, int nanos);
// Запуск временно приостановленной задачи
public final void resume();
// Метод вызывается в том случае, если задача была
// создана как объект с интерфейсом Runnable
public void run();
// Установка для задачи режима демона
public final void setDaemon(boolean on);
// Устаовка имени задачи
public final void setName(String name);
// Установка приоритета задачи
public final void setPriority(int newPriority);
// Задержка задачи на заднное время.
// Время задается в миллисекундах и наносекундах
public static void sleep(long millis);
// Задержка задачи на заднное время.
// Время задается в миллисекундах и наносекундах
public static void sleep(long millis, int nanos);
// Запуск задачи на выполнение
public void start();
// Остановка выполнения задачи
public final void stop();
// Аварийная остановка выполнения задачи с
// заданным исключением
public final void stop(Throwable obj);
// Приостановка задачи
public final void suspend();
// Строка, представляющая объект-задачу
public String toString();
// Приостановка текущей задачи для того чтобы
// управление было передано другой задаче
public static void yield();
}
С помощью конструкторов вы можете создавать задачи различными способами, указывая при необходимости для них имя и группу. Имя предназначено для идентификации задачи и является необязательным атрибутом. Что же касается групп, то они предназначены для организации защиты задач друг от друга в рамках одного приложения. Подробнее мы расскажем об этом позже.
Методы класса Thread предоставляют все необходимые возможности для управления задачами, в том числе для их синхронизации. Более подробное описание этих методов мы будем приводить по мере изложения материала.