Вместо слов, хороший пример. Следующий код (если первое обещание разрешено):
Promise.resolve()
.then
(
() => { throw new Error('Error occurs'); },
err => console.log('This error is caught:', err)
);
идентично:
Promise.resolve()
.catch
(
err => console.log('This error is caught:', err)
)
.then
(
() => { throw new Error('Error occurs'); }
)
Но с отклоненным первым обещанием это не идентично:
Promise.reject()
.then
(
() => { throw new Error('Error occurs'); },
err => console.log('This error is caught:', err)
);
Promise.reject()
.catch
(
err => console.log('This error is caught:', err)
)
.then
(
() => { throw new Error('Error occurs'); }
)
Пакет NIO Java (с Java6), оказывает поддержку для не блокирующийся ввод-вывод только, через Селектор с. Java7, надо надеяться, собирается поставляться с NIO.2, который включает асинхронную поддержку ввода-вывода. Сегодня, Ваш лучший выбор состоит в том, чтобы использовать платформу. Перемирие упомянуло Mina. Вот некоторые другие.
Теперь, относительно Вашего вопроса о потоках, Селекторы NIO не используют потоки для неблокирования ввода-вывода. В JDK6 они используют выбор () в соответствии с Windows и epoll средством на более новых ядрах Linux. Для асинхронного ввода-вывода распараллеливающие детали зависят от платформы.
java.nio
просто пакет - набор "немых" классов - отдельно он не использует использования потоков. При надлежащем использовании, такой как в Реакторный шаблон разработки можно достигнуть надлежащего, полностью масштабируемого, асинхронного ввода-вывода.
Если Вы интересуетесь использованием его для Сетевого Материала. Действительно хороший выбор:
Взглянул там его простое в использовании и очень мощное.
Другое предложение в отношении освобождает, был бы Naga (http://naga.googlecode.com). Это немного меньше похоже на платформу и больше как библиотека. Это пытается больше походить на обычные сокеты Java, если это - Ваша чашка чая. Это является минималистическим по сравнению с Гризли, Mina и Netty.