Светодиод должен не обязательно быть освещен, чтобы NIC слушал WOL, это - распространенное заблуждение. Это зависит от NIC. У меня есть Windows PC, где светодиод LAN отсутствует даже при том, что WOL работает на него. Кроме того, поиск подключенных устройств в i/f маршрутизатора не мог бы показать правдиво, если NIC прислушивается к WOL или нет. У меня есть ПК, который не видим в i/f маршрутизатора, когда во сне, но WOL работает. Так, в целом, я не думаю, что существует любой хороший способ проверить, слушает ли NIC или полностью закрытие.
я отправил свою проблему & расследование здесь, это могла быть та же проблема: След на LAN не работал 3 раза затем больше
, Мое основное право подозрения теперь состоит в том, что эта проблема происходит для пользователей RTL8111 с Ubuntu 12.04.
существует также на самом деле другая версия RTL8111, кто знает, относится ли это ко всем, и я не знаю то, что различия между 8111C, 8168B, 8169 и т.д., они используют тот же драйвер на Linux. На сайте Realtek тот же драйвер используется для следующего NICs:
RTL8111B/RTL8168B/RTL8111/RTL8168 - RTL8111C/RTL8111CP/RTL8111D (L) - RTL8168C/RTL8111DP/RTL8111E - RTL8168E/RTL8111F/RTL8411
и другой драйвер для следующего NICs:
RTL8110SC (L) (RTL8110S/RTL8110SB (L)/RTL8169SB (L)/RTL8169S (L)/RTL8169)
Не позволенный больше отправлять ссылки.. :-/
, Если Вы хотите купить другой NIC, я предлагаю не-Realtek i e любой процессор Intel.
Обновление: Я протестировал еще немного для понимания, какова проблема. Мои основные теории на данный момент площадь: система Ubuntu закрывает питание NIC в дежурном режиме, и/или драйвер Realtek RTL8111 для 64-разрядных машин не работает. См. ссылку на мой поток для деталей.
BTW я не получаю этот форум.. Я отправляю ответ, и другие обсуждают хотя не позволенный?! И мне разрешают изменить исходное сообщение, но не могу добавить комментарий!
Просто присоединяйтесь к ним один за другим:
for (Thread thread : threads) {
thread.join();
}
(Вам нужно будет что-то сделать с InterruptedException
, и вы, возможно, захотите предоставить тайм-аут на случай все идет не так, но это основная идея ...)
Определите служебный метод (или методы) самостоятельно:
public static waitFor(Collection<? extends Thread) c) throws InterruptedException {
for(Thread t : c) t.join();
}
Или у вас может быть массив
public static waitFor(Thread[] ts) throws InterruptedException {
waitFor(Arrays.asList(ts));
}
В качестве альтернативы вы можете посмотреть, используя CyclicBarrier
в ] java.util.concurrent
библиотека для реализации произвольной точки рандеву между несколькими потоками.
Если вы используете java 1.5 или выше, вы можете попробовать CyclicBarrier . Вы можете передать операцию очистки в качестве параметра конструктора и просто вызвать барьер.await ()
для всех потоков, когда есть необходимость в очистке.
Вы видели классы Executor
в java.util.concurrent
? Вы можете запускать ваши потоки через ExecutorService
. Это дает вам единственный объект, который вы можете использовать для отмены потоков или ожидания их завершения.