Я думаю, что ответ объясняется достаточно четко, если вы продолжите чтение. Позже в абзаце:
... Это связано с тем, что весь код приложения запускается в потоке, управляемом контейнером, и каждый контейнер обычно ожидает, что весь доступ к объектам, поставляемым контейнером, будет происходить в одном потоке. Это позволяет контейнеру управлять ресурсами и обеспечивать централизованное администрирование. Кроме того, использование ресурсов неуправляемым образом не рекомендуется, поскольку оно может потенциально подорвать функции предприятия, которые платформа предназначена для обеспечения, например доступность, безопасность, надежность и масштабируемость.
Я могу понять, почему вы подняли свой первоначальный вопрос, хотя формулировка первоначального утверждения немного запутанна.
Чтобы ответить на ваш вопрос:
Java EE контейнеры не должны явно помешать вам называть этот API, в том, как можно было бы ожидать (например, бросать исключение, если вы пытаетесь использовать их). Некоторые контейнеры Java EE могут использовать SecurityManager или что-то, чтобы предотвратить доступ к определенным классам, но это не требуется спецификацией.
Однако контейнер Java EE не будет в состоянии управлять, что вы делаете с этим «неуправляемым» API, JavaSE, и это считается плохая практикой, чтобы использовать их, когда управляются эквиваленты доступны для вас (например, ManagedExecutorService
против ExecutorService
)
Чтобы проиллюстрировать это, следующий код будет работать нормально в Servlet:
Runnable printSomething = new Runnable() {
@Override
public void run() {
System.out.println("Hello");
}
};
new java.lang.Thread(printSomething, "JavaSE-Thread").start();
(протестированы с использованием WebSphere Liberty)
Однако, делая это считается плохой практикой, потому что:
Использование ресурсов в неуправляемой образом не рекомендуется, поскольку он потенциально может подорвать возможности предприятия, что платформа предназначена для обеспечения, такие как доступность, безопасность, надежность, и масштабируемость.
В контейнере работает ваш код, поэтому он может запретить вам использовать определенные классы. Вы получите сообщения об ошибках, и ваше программное обеспечение не будет запущено. – Kayaman
Какую ошибку я получу?Я использовал стандартную услугу исполнителя, и все работает отлично на нескольких системах производства –
Зависит от контейнера, кроме того, вы не можете быть уверены, что он «отлично работает». – Kayaman