Асинхронное программирование с использованием Java - PullRequest
1 голос
/ 20 февраля 2010

Где найти пример асинхронного программирования с использованием Java? Я заинтересован в нахождении шаблонов асинхронного программирования для создания приложений, которые обеспечивают отзывчивость (предотвращение периодического зависания приложений и перестания отвечать на запросы пользователя и серверных приложений, которые не отвечают на запросы клиентов своевременно) и масштабируемости.

В частности, будет полезно увидеть пример, который выполняет операции ввода-вывода (такие как чтение / запись файлов, веб-запросы и запросы к базе данных), а также имеет много процессорной обработки, связанной с предложением покупки на веб-странице. .

Какие библиотеки Java могут помочь определить, когда отзывчивость приложения непредсказуема - поскольку поток приложения выполняет запросы ввода-вывода, приложение в основном передает управление обработкой потока на устройство ввода-вывода (сложная задача). диск, сеть или что-то еще)

Ответы [ 4 ]

2 голосов
/ 20 февраля 2010

В графическом интерфейсе вы можете использовать потоки для выполнения фоновых задач.

Java поддерживает неблокирующие операции ввода-вывода в новом API ввода-вывода (NIO).

Если ваш вопрос более ориентирован на архитектуру, эта книга предлагает углубленное обсуждение асинхронных шаблонов: Шаблоны архитектуры корпоративных приложений , автор Martin Fowler.

0 голосов
/ 28 июля 2012

в веб-среде вы можете использовать новую асинхронную функцию j2ee6. Взгляни на http://docs.oracle.com/javaee/6/tutorial/doc/gkkqg.html

0 голосов
/ 20 февраля 2010

Если вы используете какую-то операцию ввода-вывода (например, чтение на InputStream, которое может блокировать), вы помещаете его в поток, и самое простое решение - использовать соединение в потоке для заданного количества:

MyThread myThread = new MyThread(); 
myThread.start();
myThread.join(10000);

Это соединение будет ждать не более 10 секунд. По истечении этого времени вы можете просто игнорировать поток, ... Вы также можете использовать шаблон Декоратор . Вы можете прочитать больше здесь .

0 голосов
/ 20 февраля 2010

Какие библиотеки Java могут помочь определить, когда отзывчивость приложения непредсказуема - поскольку поток приложения выполняет запросы ввода-вывода, приложение в основном передает управление обработкой потока на устройство ввода-вывода (сложный диск, сеть или что-то еще)

Если я вас правильно понимаю, вы запрашиваете библиотеку, которая проверяет другие потоки, чтобы определить, не заблокированы ли они в вызовах ввода-вывода.

Я не думаю, что это возможно в стандартной JVM. Более того, я не думаю, что этого было бы достаточно, чтобы гарантировать «отзывчивость».

...