如何指定ThreadFactory
來更改調用WebSocketListener
的回調(onWebSocketConnect
和onWebSocketText
)的線程名稱?Change Jetty WebSocketListener線程名稱
線程名稱將是我創建服務器對象之前已知的固定名稱。
我嘗試了以下不幸的工作。
jettyServer = new Server(new NamedQueuedThreadPool("MyThreadNamePrefix");
import org.eclipse.jetty.util.thread.QueuedThreadPool;
class NamedQueuedThreadPool extends QueuedThreadPool {
private final String threadName;
public NamedQueuedThreadPool(final String threadName) {
this.threadName = threadName;
}
@Override
protected Thread newThread(final Runnable runnable) {
Thread t = super.newThread(runnable);
t.setName(threadName);
return t;
}
}
我還看到這樣線程名稱:qtp1692017180-191
(我猜代表排隊線程池)
我使用jetty-server-9.2.9
編輯: 對於我來說,不關心哪個線程執行一個特定的客戶端請求,我只希望所有線程具有相同的名稱,我可以在某處選擇。
例如我會用「Adapter/SomeInstanceId」前綴所有線程的線程名稱,這是寫入日誌並給我一個便捷的過濾/分組方式。
我知道套接字沒有綁定到單個線程。我只希望池中的所有線程具有相同的名稱,我可以在某處指定一次。我不明白爲什麼Jetty不使用我在服務器的ctor中提供的ThreadPool實現。 (或它是否內部覆蓋名稱?我不知道) – leozilla
請參閱原始問題的編輯 – leozilla
更新的答案解決您的核心關注(即:線程名稱操作是錯誤的方法) –