Оптимизация сервлетов с AsyncContext
Last updated: 10 мая 2025 г.Представим ситуацию, что сервлет ожидает завершения какого-то процесса выполняющегося в другом потоке, чтобы в последствии использовать результат его выполнения.
Но пока код сервлета остановился и ожидает, можно сделать так, чтобы поток, в котором выполняется код сервлета не простаивал, то есть, чтобы он пошел выполнять другую задачу. Для этого используется AsyncContext
.
Пример программы:
1//Создадим простенький класс.
2//Дальше поясним зачем он.
3class Friend {
4 public static void m1() {
5 System.out.println("Hello Friend!!!");
6 }
7}
8
9//Также можно увидеть что мы реализуем не только
10//Runnable но и расширяем Friend. Это преимущество
11//реализации Runnable перед расширением Thread
12//так как в Java можно расширять Лишь Один класс
13//и если бы мы расширили Thread то расширить
14//какой либо другой класс (например Friend)
15//уже не имели бы возможности.
16class MyThread extends Friend implements Runnable {
17 int i=0;
18 public void run() {
19 i++;
20 m1();
21 }
22}
23
24class RunnableExample {
25 public static void main(String[] args) {
26 //создаем один объект MyThread.
27 MyThread MyThr = new MyThread();
28 //Можно у одного объекта
29 //в отдельных потоках запускать его метод run
30 //это преимущество Runnable перед Thread.
31 //Подробнее на следующей странице.
32 Thread t1 = new Thread(MyThr);//передается в поток
33 Thread t2 = new Thread(MyThr);//передается в поток 2 раз
34 //run объекта MyThr запускается
35 //в отдельных потоках t1 и t2.
36 t1.start();
37 t2.start();
38 //Еще одно преимущество Runnable перед Thread
39 //что код класса реализующего Runnable можно
40 //использовать вне в отдельном потоке.
41 //То есть m1 просто выполнится здесь в потоке метода main
42 MyThr.m1();
43 //В конце можно увидеть 2. То есть оба потока работали
44 //с одним и тем же объектом.
45 //Все потоки добавили 1 к полю i объекта MyThr.
46 System.out.println(MyThr.i);
47 }
48}
Вывод:

Следующие уроки
Азы работы с Java Server Pages (JSP)
17
мин.
Комментарии в JSP
11
мин.
Неявные объекты в JSP: session, request и др.
14
мин.