1

임의의 임의의 시간에 버튼을 활성화 및 비활성화하는 스레드가 있습니다. 활성화 된 버튼을 클릭하면 수행 된 작업이 실행되어 버튼의 이미지가 변경됩니다. 여기에 동기화가 걱정됩니다. 버튼이 사용 불능 상태가되어 클릭이 발생했다면 이제는 두 스레드가이를 비활성화하고 이미지를 변경하기 위해 하나의 스레드를 실행합니다. 어떻게 동기화해야합니까?다음과 같은 상황에서 동기화가 필요합니까?

+0

달성하려면 어떻게해야합니까? – Ajak6

답변

2

모든 Java GUI 툴킷 (스윙, Apache Pivot, JavaFX, AWT, SWT, Android ... 등)은 단일 스레드입니다. 즉, 모든 리스너는 항상 같은 스레드에서 실행됩니다. 그래서 :

  • 아니, 당신은
  • 이 그래, 당신이 사용하지 않도록하고 버튼을 활성화하면 GUI 스레드에서 발생하도록 (이 호출 wahetever) 돌볼 필요, 동기화의 모든 종류를 수행 할 필요가 없습니다. 정확한 코드는 툴킷에 따라 다릅니다.
+1

AWT는 악명 높게 싱글 스레드가 아니며 모든 곳에서 동기화되었습니다. 디자인 할 때 실제로는 달성 할 수 없지만 여러 스레드에서 작동 할 수있는 아이디어가있었습니다. – bestsss

+0

내 GUI 클래스가 actionListener 여야한다는 말입니까? 현재 나는 actionperformed에서 이미지를 변경할 다른 액션 리스너 클래스를 만들었습니다. 단추를 토글하는 별도의 스레드. 그러나 어떤 순간에는 실행 메소드와 수행 된 액션이 모두 동일한 버튼 객체를 공유하게됩니다. @bestsss – Ajak6

+0

@ AmeyJain, 그렇지 않습니다. 하나의 실을 고집하십시오. – bestsss

관련 문제