나는 두통을 일으키는 동시성에 대해 조금 읽었다.EDT에서 main으로 작업을 보내시겠습니까?
은 당신이 사용하는 메인 스레드에서 EDT에서 실행할 작업을 설정할 수 있습니다 이해 :
SwingUtilities.invokeLater
을하지만 당신은 EDT에서 주 스레드에서 실행하는 작업을 설정할 수 있습니까? 마찬가지로
은 :
Thread mymainthread=Thread.currentThread();//<referring to the thread that initially kicks off public static void main
public void mousePressed(MouseEvent e){ //queue a task to run on mymainthread }
은 수행 할 수 있습니다
? 나쁜 생각입니까?(here)와 비슷한 다른 질문은 새로운 스레드를 만드는 것에 대해 이야기하지만 단일 스레드 (+ EDT) 응용 프로그램을 목표로한다면 기본을 계속 사용하는 것이 더 안전하고 간단하지 않습니까? ....... 또는 어쩌면 내가이 모든 잘못 됐어.
EDIT : 설명해야 할 사항 : 주 스레드 (느린 루프에서 실행 중)에서 서로 통신 할 개체를 만들고 싶었 기 때문에 다른 스레드에서 인스턴스화하지 않기를 원했습니다. edt 또는 기타.
왜 그렇게하고 싶습니까? 귀하의 요청 뒤에 동기 부여에 대해 더 자세히 말씀해 주시겠습니까? 나는이 모든 것을 잘못 알고 있다고 생각합니다. :-) 배경 스레드를 만들 때 수백 가지를 생성하지 않는 한 아무 문제가 없습니다. 그 시나리오에 대해 걱정이된다면, 어떤 종류의 ThreadPool을 사용하십시오. –
@HovercraftFullOfEels 내 질문에 공통적 인 문제인 것으로 보입니다. 서로 자주 의사 소통하는 객체를 만드는 경우 모두 동일한 스레드에서 만들어 지는지 확인하는 것이 현명하지 않다고 생각했습니다. – Nikki
Nikki : 아니요. 아마도 통신이 스레드로부터 안전한 방식으로 수행되도록 노력하는 것이 좋습니다. –