목차
- AWT하는 목적
- 이벤트 처리
- 이벤트의 인자로 람다를 쓰는 이유는?
- 이벤트와 IO 처리 관련 주의사항
AWT란
객체지향이 GUI를 표현하기 위해 만들어졌다. 운영체제의 기능을 가져다 쓰는 것이다. GUI프로그램은 무한루프로 계속 코드가 실행되고 있는 것이다. GUI는 싱글쓰레드로 해야 한다. 멀티쓰레드는 데드락으로 죽을 가능성이 높다.
이벤트 처리
- 컴포넌트에 이벤트 리스너를 추가해야 한다. 이벤트 리스너가 없어도 이벤트는 발생하고 있다. 운영체제가 수집하고 있다. 운영체제는 이벤트 큐를 이용해 이벤트를 관리한다.
- 이벤트가 일어나면 리스너에 등록된 콜백 함수를 실행한다. 콜벡함수는 내가 실행하는 것이 아니라 이벤트가 실행될 때 필요한 순간에 동작하는 함수이다.
이벤트의 인자로 람다를 쓰는 이유는?
자바에서 메서드는 일급 객체가 아니다. 일급 객체란 무엇인가 하나의 객체가 다른 객체의 연산에 사용될 수 있을 때 일급 객체라고 한다. 예를 들어, 객체가 함수의 매개변수가 되는 것, 변수에 대입 가능 등. 우리가 일반적으로 생각하는 변수의 역할을 할 수 있는 객체를 말한다.
이벤트와 IO 처리 관련 주의사항
이벤트 핸들러에는 긴 시간이 걸리는 코드가 있으면 안된다. 왜 그럴까? GUI는 싱글쓰레드로 작동하기 때문에 그 이벤트를 처리할 때까지 뒤에 있는 이벤트를 처리하지 못한다. 그럼 어떻게 구현하는가? 오래 걸리는 작업이 주로 I.O 처리이기 때문에 (ex. 다운로드) 내가 쓰레드를 따로 만들어야 한다.
'프로그래밍 > Java' 카테고리의 다른 글
20.02.09) Java - Lambda (0) | 2020.02.09 |
---|---|
20.02.06) 자바 주요 학습 키워드 (0) | 2020.02.06 |
20.02.02) Java - Stream (0) | 2020.02.02 |
20.01.29) Java - Input&Output (0) | 2020.01.29 |
20.01.25) Enum (0) | 2020.01.25 |