멀티 스레딩 환경에서 스레드 실행 마지막에 실행되는 큐 이벤트 인 리스너를 어떻게 구현합니까? 원하는 동작은 각 스레드가 이벤트에 대해 자체 큐를 가지므로 혼합되지 않고 원자 적으로 실행되지 않습니다. 따라서 스레드 A가 listener.execute()를 호출하면 "his"이벤트 만 실행됩니다.스레드 구현 당 큐
내가 생각할 수있는 유일한 방법은 ThreadLocal 변수를 사용하는 것이지만 complications here을 사용하면 차라리 어떤 것을 사용하지 않을 것입니다.
당신은 트리가 있고 x 노드를 제거하려고한다고 가정하면 각 "새로 고침"이벤트 후에 x 번 새로 고침을 실행하지 않으려 고하지만 큐에 넣고 끝에 실행하는 것이 좋습니다. .- 여분의 x-1 새로 고침 :-)
나는 당신이하고 싶은 것을 정말로 이해하지 못합니다. 리스너는 이벤트를 수신합니다. 이벤트를 큐에 넣지 않습니다. 왜 각 큐에 다른 대기열이나 다른 리스너를 전달할 수 없습니까? –
일부 이벤트는 즉시 실행되며 일부 이벤트 유형은 한 번에 (어쨌든) 원자 적으로 실행되어야합니다. 다른 방식으로 서로 관련되기 때문에 ... 다른 리스너를 스레드로 전달합니까? – lisak
'for (int i = 0; i <10; i ++) {Runnable r = new MyRunnable (new MyListener()); 새 스레드 (r) .start(); }' –