2009-11-21 3 views
1

Я не работал с Java нитями в несколько лет, так что у меня есть очень простой вопрос о многопоточности. Я пишу пакет java, который будет вызываться другим языком (matlab). Matlab может создавать экземпляр класса Java и запускать Java-код.Многопоточное приложение на Java?

Я хочу быть в состоянии:

  1. запуска нескольких потоков
  2. Получить список всех запущенных потоков
  3. Stop данного потока по имени
  4. Остановить все темы

я использовал Thread класс в прошлом, но есть ли проще/более полные пакеты теперь доступны? Может ли кто-нибудь предоставить простое демо или указать мне учебник по этому вопросу?

ответ

4

Возможно взглянуть на примеры в online supplementиз Параллельное программирование в Java: принципы дизайна и шаблоны Дуг Леа, которая книга по Threads и параллельного программирования (но это не распространяется на новый java.util.concurrent пакет).

Или проверить более недавнее Java Параллелизм на практике Брайан Гетц, Тим Пайерлсом, Джошуа Блох, Джозеф Bowbeer, Дэвид Холмс, Doug Lea (команда мечты для такой книги) и его companion website.

3

Интерфейс Executor предоставляет много полезных методов для управления и выполнения темы, я хотел бы предложить взглянуть на это. Там также Executors класса, который предоставляет различные варианты пула потоков, и есть какая-то хорошая информация here.

+0

AFAIK, исполнителях не имеют возможности контролировать темы по имени. Когда отправляется задание или Runnable, контроль уже отсутствует. – mhaller

1

Предупреждение: если вам нужно иметь возможность останавливать потоки (безопасно), вам необходимо закодировать их так, чтобы они правильно ответили на Thread.interrupt(). Например, поток с интенсивным вычислением должен периодически проверять флаг interrupted, а запросы ввода-вывода должны выполняться с использованием API-интерфейсов, которые позволяют прерывать блокирующий вызов. Это не просто ...

Смежные вопросы