Ну, если кому-то интересно, ответ «да» и «нет».
Нет, вы не увидите свои заказы в веб-интерфейсе eParcel.
Но вы можете увидеть их через MyPost Business! Как-то два связаны, и вы просто должны убедиться, что вы выбрали тот же код местоположения, что и ваша система eParcel. Почему это так? Без понятия. Почта Австралии работает таинственным образом. Один из их техников предупредил меня об этом механизме.
Кроме того, вы всегда можете просто использовать API, чтобы получить список всех ожидающих пакетов и делать все, что вам нужно сделать на своей стороне.
Есть ли какие-либо API, которые Вы используете который поточная обработка помощи?
Вы имеете в виду независимо от java.util.concurrent
? FunctionalJava получил некоторые конструкции, которые помогают в параллельном программировании, как описано в многослойном учебном руководстве, которое запускается здесь.
Вы использовали потоки способом, который не осмысляет как поток, являющийся процессом?
Да, до такой степени, что потоки не осмысляют вообще. Возьмите асинхронного бегуна задачи, например. Это использует потоки под покрытиями, но я не вижу их, и я не забочусь о них. Ими полностью управляет бегун задачи.
Под покрытиями это, все просто распараллеливает, но когда мы прекращаем заботиться об отдельном потоке и просто думаем о них как много слотов, где можно так или иначе вставить код и иметь выполненный сроком на время, затем это - когда мы начинаем достигать более высокого уровня абстракции.
Агенты/Агенты являются распространенным способом сделать это. Агент похож на поток, который имеет глыбу состояния, и затем можно отправить ему некоторый код и сказать, "делают это к состоянию, когда у Вас есть время" или что-то вдоль тех строк.
Обычная правовая оговорка: параллельное программирование, на любом языке, с помощью любого уровня абстракции, трудно и сложно и имеет много рисков. Учтите:
Java имел большое значение в создании параллельного программирования, максимально легкого для разработчиков. Для большинства случаев Вы будете видеть это java.util.concurrent
имеет большинство абстракций, в которых Вы будете нуждаться:
Runnable
интерфейс и Thread
объект можно расшириться. Просто добавьте свой код, и у Вас есть поток, готовый работатьExecutors
: постоянный пул, динамический пул, запланированный, или что бы то ни было. Просто бросок a Runnable
в нем и он делает остальных.Semaphore
s и блокировки всех видов освобождают Вас от необходимости реализовать общие методы блокировки.wait()
и notify()
API для всех объектов.Единственная вещь уехала, как разработчик программного обеспечения, необходимо удостовериться написание правильного кода. Значение Вас должно знать об опасных ситуациях, которым Вы могли бы выставлять себя:
Используйте потоки только, когда параллелизм непосредственно улучшит Ваше поведение приложений.
Если Вы ожидаете на IO/network/hardware-bound ресурсе, ДЕЙСТВИТЕЛЬНО породите поток на нем так, можно продолжить делать другой материал.
Если Вы просто пытаетесь изящно разделить зависящие от ЦП вычисления, НЕ используйте потоки. Вы просто могли бы закончить тем, что ухудшили свою производительность.
При использовании потоков удостоверьтесь, что Вы полностью рассмотрели риски и трижды проверили, что не пропустили исключительных ситуаций.
Самый быстрый способ войти в вещи состоит в том, чтобы сделать учебное руководство по параллелизму Sun. Кроме этого, получите хорошую книгу.
Удача :)
Параллелизм является глубокой и сложной темой для покрытия. Книги как Параллелизм Java на практике могут помочь.
См. Обзор Concurrency Utilities для API на поточной обработке. BlockingQueue <E> может быть полезным, например.
Очередь, которая дополнительно поддерживает операции, которые ожидают очереди для становления непустыми при получении элемента, и ожидают пространства для становления доступным в очереди при хранении элемента.
Посмотрите CountDownLatch
Помощь для синхронизации, которая позволяет одному или нескольким потокам ожидать до ряда операций, выполняемых в других потоках, завершается.
и CyclicBarrier для некоторого интересного поведения.
Помощь для синхронизации, которая позволяет ряд потоков всем, ожидает друг друга для достигания общей точки барьера.
Править: Я читаю Параллелизм Java на практике теперь. Это очень хорошо.
При использовании потоков я иногда визуализирую их как сплетение трех или более пространственных взаимосвязей между Объектами в Пространственном контексте.
Звучит сложно, например, как бы вы концептуализировали 600 потоков? Почему бы не подумать о них как о нескольких потоках выполнения, выполняющихся, по-видимому, одновременно.
Существуют ли какие-либо API-интерфейсы, которые вы используете для поддержки потоковой передачи?
Я предлагаю, что самые простые и прямые - это первые совпадения, которые вы найдете. http://www.google.co.uk/search?q=java+threads
Использовали ли вы потоки таким образом, который не концептуализируется как поток как процесс?
Поскольку потоки не являются процессы, я не могу сказать, что когда-либо думал о потоках как о процессах. (За исключением старых версий Linux) Процессы не разделяют память / объекты по умолчанию для начала, они работают полностью независимо (обычно это разные программы, возможно, написанные на разных языках). Они также запускаются по-разному с использованием разных API.
Существует мнение, что многопоточность - это сложная задача. На самом деле я бы сказал наоборот. Многопоточное программирование требует, чтобы ваш код был простым, понятным и понятным. Хотя это требует опыта, ваша цель - простота.