/ / Чи безпечно виконується Runnable, запущений AsyncContext в потоці Servlet? - java, багатопоточність, java-ee, сервлети, асинхронні

Чи працює Runnable з AsyncContext в безпеці потоку Servlet? - java, багатопотокові, java-ee, сервлети, асинхронні

Я майже впевнений, але краще це пояснити: Якщо a Runnable починається з AsyncContext запиту сервлета, чи є код у методі run потокобезпечним? Я припускаю, що це так. Тому що є новий Runnable на потік, хіба "не це? Чи може хто-небудь пояснити це питання?

Відповіді:

3 для відповіді № 1

Ніякий Java-код, якщо він явно не написаний так, не є безпечним для потоку. AsyncContext виставляє a start(Runnable) метод, який приймає a Runnable значення. Якщо у вас є Runnable і передавати його як аргумент start(..) а потім повторно використовувати його в іншому потоці, його безпека потоку може бути порушена.

Що більше, якщо ваш Runnable ініціалізовано деяким станом, який спільно використовується з іншими частинами вашої програми, а його безпека потоку знову буде невизначеною.

Це все про те, як ви керуєте ним.