Java/자바 정리

126. 소리와 글자를 번갈아 출력해보자 – Toolkit.beep()와 Thread.sleep()

코딩하는냥이 2025. 5. 15. 14:16
반응형

이번 글에서는 java.awt.Toolkit의 beep() 메서드를 이용해 소리(비프음) 를 내고,
Thread.sleep()을 사용하여 일정 시간 동안 멈췄다가 다시 실행되는 구조를 실습합니다.
소리와 출력이 순차적으로 실행되는 구조로, 시간 제어 흐름과 반복문의 기본을 함께 연습할 수 있습니다.


📌 예제 코드

import java.awt.Toolkit;

public class BeepPrintExample {
    public static void main(String[] args) {
        Toolkit toolkit = Toolkit.getDefaultToolkit();  // Toolkit 객체 생성

        // 5번 비프음 출력
        for (int i = 0; i < 5; i++) {
            toolkit.beep();  // 소리 발생
            try {
                Thread.sleep(500);  // 0.5초 대기
            } catch (Exception e) {
                // 예외 무시
            }
        }

        // 5번 "띵" 출력
        for (int i = 0; i < 5; i++) {
            System.out.println("띵");
            try {
                Thread.sleep(500);  // 0.5초 대기
            } catch (Exception e) {
                // 예외 무시
            }
        }
    }
}

💻 실행 결과

(비프음 5회 출력, 0.5초 간격)
띵
띵
띵
띵
띵

※ 비프음은 콘솔에 보이지 않지만, PC 스피커에서 "삑" 소리가 들려야 합니다.
OS 및 장치 설정에 따라 소리가 안 날 수도 있어요.


💬 코드 설명

  • Toolkit.getDefaultToolkit()은 Toolkit 객체를 생성합니다.
    • toolkit.beep()은 OS 시스템의 기본 비프음을 출력합니다.
  • Thread.sleep(500)은 현재 스레드를 0.5초간 멈춥니다.
    • 비프음과 "띵" 사이에 간격을 주기 위한 용도입니다.
  • 두 개의 for문이 순차적으로 실행되기 때문에,
    소리가 먼저 5번 발생하고 그 다음 "띵"이 출력됩니다.

💡 포인트 정리

  • Toolkit.beep()은 간단한 시스템 알림음을 출력할 수 있는 기능입니다.
  • Thread.sleep(ms)는 일시정지로 흐름 제어할 수 있는 방법입니다.
  • try-catch로 InterruptedException을 처리해야 하며,
    일반적으로 멀티스레드, 애니메이션, 반복 실행 등에서 자주 활용됩니다.

📌 정리하자면, 이 예제는 비프음 → 정지 → 텍스트 출력 → 정지 구조를 통해
간단한 흐름 제어와 반복문의 응용을 연습할 수 있습니다.
이후 멀티스레드로 소리와 텍스트를 동시에 출력하는 구조로 확장도 가능하며,
타이머 기능, 경고음 구현, 간단한 알림 시스템에서도 유용하게 활용됩니다.