컴퓨터에서 우리가 응용프로그램을 사용하면 기본적으로 OS의 통제 내에서 동작을 하게 돼 있다.
어떠한 GUI 환경에 리스너는 OS에서 어떠한 프로그램을 계속 주시하다가 프로그램을 사용하는 유저가 키보드나 마우스를 조작하게 됐을 때 그 움직임을 체크해서 어떠한 메모리공간에 저장을 한다.
이 움직임을 체크해서 순차적으로 기록해 두는 메모리 공간을 "이벤트 루프"(큐)라고 한다.
그리고 이벤트 루프에 기록해 놓은 명령을 실행하기 위해서 "이벤트 핸들러"가 호출이 된다. 이벤트핸들러는 Stack공간인데 즉 리스너 내부에 메서드가 호출된다는 뜻이다.(메서드 실행)
여기서 중요한 점은 대부분의 GUI 환경의 메커니즘이 위 내용과 같이 흘러가는데
java에서 GUI프로그램을 구축할 때 굉장히 중요한 규칙이 있다.
1. 그림 변경 시점 : 이벤트 루프에 모든 임무(task)가 완료되어야 repaint(다시 그려진다)가 된다.
- java는 메인스래드가 하나이기 때문에 동시에 여러 가지 동작을 하려면 스레드가 필요하다
2. 메인스레드만 있으면 이벤트 루프에 사용자의 동작을 전달할 때 그 동작이 여러 가지 동작이라 하더라도 스레드가 하나이기 때문에 하나만 동작된다.
'JAVA,객체지향' 카테고리의 다른 글
main을 가진 클래스가 모든 객체(heap)의 정보를 가지고 있다. (0) | 2021.12.06 |
---|---|
어댑터 패턴과 인터페이스default (0) | 2021.12.06 |
소켓통신 실습 (스레드로 양방향통신) (0) | 2021.12.03 |
소켓통신 실습 (일대일) (0) | 2021.12.03 |
소켓통신 개념(포트(port)개념) (0) | 2021.12.02 |