나는 AWT EDT에 작업 단위를 보내기 위해 invokeLater()
이라는 단순함을 좋아한다. 백그라운드 스레드 (예 : SwingWorker)에 작업 요청을 보내는 것과 비슷한 메커니즘을 사용하는 것이 좋지만 이해할 때 invokeLater()가 의존하는 일종의 이벤트 대기열 처리 대기열이 없습니다 (&).Java에서 "이벤트 중심"백그라운드 스레드를 만들려면 어떻게해야합니까?
그래서 대신 다른 스레드가 메시지를 보내는 블로킹 큐를 배경 스레드에 제공하고 메시지가 도착할 때까지 스레드가 본질적으로 수신 루프를 실행합니다.
실제로, 정확히 어떻게 백그라운드 스레드에서 EDT와 유사한 동작을 구현할 수 있습니까? 다른 한편으로, 나는 하늘에있는 보이지 않는 이벤트 디스패치 큐 (Dispatch Queue)로부터 파견 될 때마다 "작업 물방울 (work droplets)"을 처리하면서 단순히 거기에 매달려있는 스레드의 단순함을 좋아합니다. Java는 이러한 "이벤트 중심 작업자 스레드"를 만드는 방법을 제공합니까? 또는 메시지 대기열로이 작업을 수행하는 올바른 방법일까요? 그리고 관련 맥락에서 메시지를 전달하는 기술은 invokeLater()
에 결점이 있습니까?
잘 알고 있지만 "파견"을 제공하지 않는 것 같습니다. – Chap
단일 스레드 실행 프로그램에서 실행 가능 파일을 보내는 것은 EDT에서 실행 파일을 보내는 것과 같습니다. 작업은 처리를 위해 대기열에 올려지고 현재 작업이 없으면 스레드는 대기 상태를 유지합니다. – toto2
@Chap 다른 답변의 설명에서 문제에 대한 설명을 읽었으며 단일 스레드 집행자가 정확히 찾고있는 것 같습니다. – toto2