목록
'java' 76건
-
스레드 생명 주기와 스케줄링스레드 상태스레드는 JVM에 있어 생명체와 같습니다. 스레드는 태어나고, 실행하고, 잠자고, 대기하고, 종료하는 등 생명 주기(life cycle)를 가집니다. 그리고 생명주기 동안 여러 상태의 변이를 거칩니다. 스레드의 상태는 다음과 같이 총 6가지이며 JVM에 의해 관리됩니다.New스레드가 생성되었지만 아직 실행할 준비가 되지 않은 상태입니다. start() 메소드가 호출되면 RUNNABLE 상태가 관리됩니다.RUNNABLE스레드가 현재 실행되고 있거나, 실행 준비되어 스케줄링을 기다리는 상태입니다. TIMED_WAITING스레드가 sleep(long n)을 호출하여 n밀리초 동안 점을 자는 상태입니다.BLOCK 스레드가 I/O 작업을 실행하여 I/O 작업의 완료를 기다리면서 멈춘(blocked) 상..
-
Runnable 인터페이스 스레드 만들기Runnable은 클래스가 아닌 인터페이스로서 경로명 java.lang.Runnable이며, 다음과 깉이 추상 메서드 run() 하나만 가지고 있습니다.interface Runnable { public void run();} 스레드 클래스 선언: Runnable 인터페이스 구현Runnable 인터페이스를 구현하도록 TimerRunnable 클래스를 선언합니다.class TimerRunnable implements Runable { ................................} 스레드 코드 작성: run() 메서드 오버라이딩Runnable 인터페이스의 run() 메서드를 오버라이딩하여 스레드 코드를 작성합니다.class TimerRunnable implments Runnable { @Over..
-
Thread 클래스를 상속받아 스레드 만들기Thread 클래스의 경로명은 java.lang.Thread입니다. Thread 클래스를 상속받아 개발자의 스레드 코드를 만들 수 있습니다. Thread 클래스는 스레드를 만들고 유지 관리하기 위해 많은 메서드를 제공합니다. 스레드 클래스 작성: Thread 클래스 상속 먼저 Thread를 상속받아 TimeThread 클래스를 작성합니다.class TimeTread extends Thread { // Thread 상속받음 ...............................................} 스레드 코드 작성: run() 메소드 오버라이딩Thread의 run() 메서드를 오버라이딩합니다. run() 메서드에 작성된 코드를 스레드 코드라고 부른다. 스레드는 run()에서부터 실행을 시작하고..
-
자바의 멀티스레딩멀티스레드와 자바 가상 기계(JVM)자바에는 프로세스(process)가 존재하지 않고 스레드 개념만 존재하며, JVM은 멀티스레딩만 지원합니다. 자바 스레드(java thread)는 JVM에 의해 스케줄되는 실행 단위 코드 블록입니다. 하나의 JVM은 하나의 자바 응용프로그램만 실행합니다. 사용자가 자바 응용프로그램을 실행시키면, JVM이 먼저 실행되고 JVM이 자바 응용프로그램을 로딩하여 실행시킵니다. 자바 응용프로그램이 종료되면 JVM도 함깨 종료됩니다. 만일 한 컴퓨터에서 n개의 자바 응용프로그램이 실행된다는 하면 n개의 JVM이 실행된다. JVM은 멀티스레딩을 지원하며 자바 응용프로그램은 하나 이상의 스레드를 생성할 수 있습니다. 2개 이상의 자바 응용프로그램이 각각 JVM에 의해 실행되며, 서로..
-
스레드와 멀티태스킹멀티태스킹멀티태스킹(multitasking)이란 멀티(multi) + 태스킹(tasking)의 합성어로 다수의 작업을 동시에 처리하는 것을 말합니다. 멀티태스킹 프로그램간단한 응용프로그램은 보통 하나의 작업(태스크)만 하는 경우가 대부분이지만, 큰 규모의 응용프로그램은 많은 경우 여러 작업(태스크)을 동시에 실행합니다. 스래드와 멀티태스크컴퓨터의 스레드(thread)는 thread of control의 준말로서 프로그램 코드를 실행하는 하나의 실 혹은 작업입니다. 하나의 실로 하나의 바느질밖에 없듯이, 하나의 스레드로 하나의 작업밖에 처리할 수 없습니다.스레드는 운영체제나 JVM에서 테스크(작업)를 실행하는 단위로서, 운영체제나 JVM에 의해 관리되는 단위입니다. JVM은 하나의 테스크(작업)를 실행하기..
-
스윙의 페인팅 메커니즘스윙 컴포넌트이 그려지는 과정스윙에서 페인팅의 기본 골격은 JComponent에 의해 구현되어 있습니다. 모든 스윙 컴포넌트들은 JCompent를 상속받음으로써 자연스럽게 스윙의 페인팅 메커니즘에 따라 가도록 됩니다. 스윙의 페인팅과 관련된 몇 개의 JComponent의 메소드는 다음과 같습니다. repaint()repaint()는 Component 클래스의 메서드로 자바 플랫폼에게 컴포넌트에 변화가 일어났으니 강제로 페인팅할 것을 지시하는 메서드입니다.component.repaint(); // 컴포넌트 다시 그리기 지시 컴포넌트를 다시 그리기 위해서는 부모 컴포넌트부터 그리는 것이 좋습니다. 컴포넌트의 크기나 위치가 변경되었다면, 컴포넌트의 부모에게 컴포넌트의 이전 모양이나 이전 위치의 진상을 지우도록..
-
클리핑(Clipping)클리핑 개요클리핑이란 컴포넌트의 전체 그래픽 영역 내 특정 사각형 영역에만 그래픽이 이루어지도록 하는 기능입니다. 클리핑이 이루어지는 사각형 영역을 클리핑 영역(clipping area)이라고 부르며 반드시 시각형으로 설정됩니다. 클리핑 영역 설정 메소드Graphics 객체애는 글리핑 영역 정보릁 나타내는 프로퍼티와 클리핑 영역을 다루는 메서드를 가지고 있습니다. 개발자는 Graphics의 다음 메서드를 이용하여 클리핑 영역을 수정할 수 있으며, 도형 그리기, 칠하기, 문자열 출력, 이미지 그리기 등이 실행되면 클리핑 영역에만 그래픽이 이루어집니다. 클리핑 영역에 그리기import javax.swing.*;import java.awt.*;public class GraphicsClipEx extends ..
-
이미지 그리기이미지 그리는 2가지 방법GUI 응용프로그램 작성에 있어 이미지 그리기는 매우 중요합니다. 스윙에서 이미지는 다음 2가지 방법으로 그립니다.JLbel 컴포넌트를 이용하여 이미지 그리기Grpahics의 메소드를 이용하여 이미지 그리기1. JLabel을 이용하여 이미지를 출력합니다.ImageIcon image = new ImageIcon("images/apple.jpg"); // 이미지 파일 읽기JLabel label = new JLabel(image); // 읽은 이미지를 출력할 레이블 컴포넌트 만들기panel.add(label); // 레이블 컴포넌트를 패널에 부착하여 출력 이 방법은 코딩이 쉬운 장점이 있지만 이미지가 원본 크기로만 그려자는 단점이 있습니다. 2. Graphics의 drawImage()..
-
세션 쿠키 사용하기1. 다음과 같이 Cookie의 setMaxAge() 메서드를 이용해 유효 시간을 -1로 설정하여 세션 쿠키가 생성됩니다.package sec02.ex01;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.Cookie;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;im..
-
도형 그리기와 칠하기도형 그리기Grahics를 이용하여 선, 타원, 사각형, 둥근모서리사각형, 원호, 페다각형 등을 그릴 수 있습니다. 이 중에서 선, 원, 사각형을 그리는 메소드는 다음과 같습니다.void drawLine(int x1, int y1, int x2, int y2)// (x1, y1) 좌표부터 (x2, y2) 좌표까지 선을 그린다.void drawRect(int x, int y, int width, int height)// (x, y) 좌표에 width x height 크기인 사각형을 그린다.void drawOval(int x, int y, int width, int height)// (x, y) 좌표에 width x height 크기인 사각형에 내접하는 타원을 그린다.void drawRoundRect(int..
-
Graphics그래픽 기반 GUI 프로그래밍그래픽 기반 GUI 프로그래밍이란 스윙 컴포넌트를 사용하지 않고 선, 원, 이미 등을 직접 그려 GUI 화면을 구성하는 방식입니다. 이 방식의 장점첫째, 그래픽 기능을 이용하면 스윙 컴포넌트로 만들 수 없는 모양을 자유자재로 만들어낼 수 있습니다.둘째, 그래픽 그리기는 컴포넌트 그리기보다 빠르다.셋째, 스윙도 결국 하부에는 그래픽을 기반으로 작성되었기 때문에, 자바의 GUI 바탕 기술을 이해하는데 도움이 됩니다.넷째, 개발자는 그래픽을 이용하여 자신만의 컴포넌트를 장착할 수 있습니다. GraphicsGraphics 클래스의 경로명은 java.awt.Graphics이며, 그리기, 칠하기, 이미지 출력, 클리핑 등 GUI 프로그래밍에 있어 필요한 필드와 메소드를 제공합니다. Gr..
-
스윙 컴포넌트 그리기컴포넌트는 자신의 모양을 스스로 그린다.모든 GUI 플랫폼에서 그리기(painting)의 기본은 GUI 컴포넌트가 스스로 그린다는 점입니다. 자바의 스윙도 마찬가지이며, 각 스윙 GUI 컴포넌트는 자신의 모양을 그리는 메서드를 가지고 있습니다. 이제, 스윙에서 각 컴포넌트가 자신의 모양을 그리는 paintComponent() 메서드에 대해 알아봅시다. paintComponent()모든 스윙 컴포넌트가 가지고 있는 메서드로서, 스윙 컴포넌트가 자신의 내부를 그리는 paintCompontent() 메서드의 원형은 다음과 같습니다,void paintComponent(Graphics g) // 컴포넌트의 내부 모양을 그립니다. 또한 paintComponent()는 JComponent의 추상 메소드이므로 모든 스..