ществующий и используется только для совместимости с activeCount (понятия неактивной группы просто нет).
public int enumerate(ThreadGroup[] groupsInGroup, boolean recurse)
Подобен соответствующему варианту метода enumerate для подсчета потоков, но заполняет массив groupsInGroup ссылками на объекты Вложенных групп потоков.
public int enumerate(ThreadGroup[] groupsInGroup)
Метод аналогичен предыдущему при условии enumerate(groupsInGroup, true) .
Для управления потоками в группе могут использоваться методы объекта ThreadGroup. Обращение к методу interrupt объекта группы приводит к вызову методов interrupt для каждого потока в группе, включая и те, Которые принадлежат вложенным группам. Этот метод представляет собой единственный способ применения объекта ThreadGroup в целях непосредственного воздействия на потоки группы – в ранних реализациях Java существовали и другие, но нынче все они не рекомендуются для использования.
В составе класса Thread существуют два статических метода, позволяющих обрабатывать данные о группе, которой принадлежит текущий поток. Они являются сокращенными вариантами цепочки вызовов – currentThread, getThreadGroup для текущего потока и требуемого метода соответствующего объекта ThreadGroup.
public static int activeCount()
Возвращает количество действующих потоков в группе, к которой относится текущий поток.
public static int enumerate(Thread[] threadsInGroup)
Метод аналогичен вызову enumerate(threadsInGroup) объекта группы, которой принадлежит текущий поток.
В классе ThreadGroup также предусмотрен метод, который вызывается, когда поток "умирает" ввиду возникновения необрабатываемого исключения.
public void uncaughtException(Thread thr, Throwable ехс)
Вызывается, когда поток thr в текущей группе генерирует исключение
ехс, которое далее не обрабатывается.
Синхронизация потоков, блокировка объекта и блокировка класса
Java поддерживает несколько потоков для выполнения. Это может привести к тому, что два или более потока получат доступ к одному и тому же полю или объекту. Синхронизация это процесс, который позволяет выполнять все параллельные потоки в программе синхронно. Синхронизация позволяет избежать ошибок согласованности памяти, вызванные из-за непоследовательного доступа к общей памяти.
Когда метод объявлен как синхронизированный — нить держит монитор для объекта, метод которого исполняется. Если другой поток выполняет синхронизированный метод, ваш поток заблокируется до тех пор, пока другой поток не отпустит монитор. Синхронизация достигается в Java использованием зарезервированного слова
Do'stlaringiz bilan baham: |