1. try-with-resources 구문
- Java7 부터 도입된 기능으로, 자원을 명시적으로 닫아주는 코드를 간소화 하기 위한 구문
- 주로 파일, 네트워크 연결, 데이터베이스 연결 등의 자원을 사용한 후에 반드시 닫아주어야 하는 경우 활용됨
- AutoCloseable 인터페이스를 구현한 자원을 효과적으로 사용할 수 있음
- AutoCloseable은 close() 메서드를 제공하는 인터페이스로 이를 구현한 클래스는 try-with-resources문에서 사용될 수 있음
2. 기본 구조
try (자원의 생성 및 할당) { // AutoCloseable을 구현한 객체를 생성하고 할당, 블록 실행 전에 자원 초기화
// 자원을 사용하는 코드 작성
// 블록이 끝나면 자동으로 close() 메소드가 호출되어 자원이 닫힘
} catch (ExceptionType e) {
// 예외 처리 코드
}
3. 적용하기
1) 기존 코드
try {
MqttClient client = new MqttClient(mqttUrl, MqttClient.generateClientId());
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
client.connect(options);
MqttMessage mqttMessage = new MqttMessage(mqttRequestDto.getPayload().getBytes());
mqttMessage.setQos(1);
client.publish(mqttRequestDto.getTopic(), mqttMessage);
client.disconnect();
} catch (MqttException e) {
e.printStackTrace();
}
2) try-with-resources 적용하여 변경
try(MqttClient client = new MqttClient(mqttUrl, MqttClient.generateClientId())) {
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
client.connect(options);
MqttMessage mqttMessage = new MqttMessage(mqttRequestDto.getPayload().getBytes());
mqttMessage.setQos(1);
client.publish(mqttRequestDto.getTopic(), mqttMessage);
client.disconnect();
} catch (MqttException e) {
e.printStackTrace();
}
'Java' 카테고리의 다른 글
[Java] LinkedBlockingQueue 클래스 (0) | 2023.12.12 |
---|---|
[Java] 맥북 m2 JDK 설치 (1) | 2023.11.19 |
[Java] 문자열 비교 == 과 equals() (0) | 2023.09.02 |
Java 네트워킹(networking) (0) | 2023.01.26 |
Java 입출력(I/O) (0) | 2023.01.26 |