스레드와 병렬로 특정 이벤트가 발생할 때마다 호출 할 스레드에 메서드가 있다고 가정 해 봅니다. 스레드가 실행중인 클래스의 객체를 저장할 수 있습니까 (해시 맵에서 말하게 할 수 있습니다). 그런 다음 객체를 직접 호출하여 메소드를 호출 할 수 있습니까? 예를 들어스레드 외부에서 실행중인 스레드에서 메서드 호출
:
while(someCondition){
SomeThread st = new SomeThread();
Thread t = new Thread(st);
t.start();
hashMap.put(unique_id, st)
}
을 이제, hashMap
가 만든 스레드 모두가 볼 수 있다고 가정하자 :
Class SomeThread implements Runnable{
SomeThread(){
}
void run(){
//do something
}
void someMethod(){
//do something else
}
}
여러 스레드가이 클래스에 생성됩니다 말할 수 있습니다. unique_id
을 사용하여 hashMap
에 액세스하여 필요한 스레드 개체를 얻은 다음 st.someMethod()
으로 전화 할 수 있습니까?
편집 : P2P 네트워크 프로그래밍 관점에서이 질문을하고 있습니다. 피어가 다른 피어의 메시지를 듣고 특정 메시지를 받으면 그에 연결된 다른 모든 피어에게 다른 표준 메시지를 보내야합니다. 이 경우이 표준 메시지를 보내는 방법을 동기화 할 수 있습니까?
이론적으로 맵에서 값을 가져 와서 호출 할 수 있지만 여전히 호출 스레드에서 메서드를 실행합니다. Java 오브젝트는 스레드에 속하지 않습니다. 대부분의 다른 뉴스 스레드에 알림을 보내고 다른 스레드가 알림을 기다리거나 폴링하도록해야합니다. – luk2302
빠른 복귀에 감사드립니다 :-) – GhostCat
@GhostCat 공유 데이터 구조를 사용하지는 않았지만 특정 접근 방식을 사용할 수 있는지 여부에 대한 원래 질문에 대한 대답을 찾았습니다. 따라서 귀하의 답변을 수락하는 것이 공정한 것입니다. 내 프로젝트에 다른 문제가 있지만 다른 새로운 질문 이겠지요. – tinkuge