JAVA - 14

Date:     Updated:

카테고리:

태그:

img

신호등.java

Java Swing을 사용하여 버튼을 클릭하면 신호등의 색깔이 변경되는 간단한 그래픽 애플리케이션을 구현한 예제입니다.

MyPanel 클래스는 JPanel을 상속받고 ActionListener를 구현한 패널입니다. 이 패널은 BorderLayout을 사용하여 버튼을 남쪽에 배치합니다. 버튼이 클릭되면 actionPerformed 메서드가 호출되어 신호등의 색깔을 변경하고 화면을 다시 그립니다.

paintComponent 메서드는 그래픽 컴포넌트를 그리기 위해 재정의된 메서드입니다. 메서드 내부에서는 Graphics 객체를 사용하여 원을 그리고 색깔을 채우는 작업을 수행합니다. light_number 변수의 값에 따라 빨간색, 초록색, 노란색 원이 그려지며, 이 값은 버튼이 클릭될 때마다 변경됩니다.

MyFrame 클래스는 JFrame을 상속받는 프레임을 생성하고, 그 안에 MyPanel 객체를 추가합니다. 프레임의 크기와 타이틀 등을 설정하고, 애플리케이션을 실행하면 버튼을 누를 때마다 신호등의 색깔이 변경되는 창이 나타납니다.

Image description Image description Image description

Synchronized.java

SynchronizedEx 클래스는 main 메서드를 포함하고 있으며, SharedBoard 객체와 두 개의 StudentThread 스레드를 생성하여 실행합니다.

SharedBoard 클래스는 공유 데이터를 나타내며, sum이라는 변수를 가지고 있습니다. add 메서드는 동기화된 메서드로 선언되어 있습니다. 이는 synchronized 키워드를 사용하여 여러 스레드가 동시에 이 메서드를 호출할 때 동기화를 통해 하나의 스레드만 접근할 수 있도록 합니다. 메서드 내부에서는 현재 sum 값을 읽고 10을 더한 후 다시 sum에 저장하고 출력합니다.

StudentThread 클래스는 Thread 클래스를 상속받은 스레드 클래스입니다. 생성자를 통해 이름과 공유 객체인 SharedBoard를 받아와서 필드에 저장합니다. run 메서드에서는 반복문을 통해 10번 동안 boardadd 메서드를 호출합니다.

실행 결과는 스레드가 동시에 add 메서드를 호출하면서 sum 값이 변경되는 과정을 보여줍니다. 출력은 각 스레드가 add 메서드를 호출한 후의 sum 값을 보여주는 것입니다.

Image description

ThreadFinishFlag_ex.java

  1. ThreadFinishFlag_ex 클래스는 JFrame을 상속받고, 마우스 클릭 이벤트를 처리하는 기능을 가지고 있습니다.
  2. RandomThread 클래스는 스레드 객체를 생성하고 실행하는 역할을 합니다.
  3. ThreadFinishFlag_ex 클래스의 생성자에서는 프레임을 설정하고, 마우스 클릭 이벤트를 처리하는 무명 클래스를 생성하여 등록합니다.
  4. 마우스로 프레임 안을 클릭하면 th.finish() 메소드가 호출되어 스레드의 종료를 요청합니다.
  5. RandomThread 클래스는 JFrame의 컨텐트 팬을 인수로 받아서 그래픽 처리를 수행합니다.
  6. th.start() 메소드를 호출하여 스레드를 실행합니다.

실행 과정은 다음과 같습니다:

  1. 프레임이 생성되고 화면에 표시됩니다.
  2. 스레드 객체 th가 생성되고, th.start() 메소드를 호출하여 스레드가 실행됩니다.
  3. 마우스로 프레임 안을 클릭하면 th.finish() 메소드가 호출되어 스레드의 종료를 요청합니다.
  4. 스레드는 finish() 메소드 내부에서 종료 조건을 확인하고 종료됩니다.

따라서, 위의 코드는 프레임을 표시하고 마우스 클릭 이벤트로 스레드를 종료할 수 있는 예제입니다.

Image description

java 카테고리 내 다른 글 보러가기

댓글 남기기