Java 33

Java_데몬 스레드

데몬 스레드 (daemon thread) : 주 스레드의 작업 돕는 보조적 역할을 수행하는 스레드이다주로 백그라운드에서 작업을 수행한다. 주 스레드가 종료될 때 자동으로 함께 종료된다예) 워드프로세서 자동저장, 미디어플레이어의 동영상 및 음악 재생, 가비지 컬렉터  데몬스레드를 만들기 위해서는 주 스레드가 데몬이 될 스레드의 setDaemon(true)를 호출하면 된다  데몬 스레드를 사용할 때 주의할 점은스레드가 이미 시작된 후에는 데몬 스레드로 변경할 수 없다따라서 이 메서드는 스레드를 시작하기 전에 etDaemon(true) 사용하여 호출해야한다 그리고 데몬 스레드는 프로그램이 종료될 때 강제로 멈출 수 있으므로 데이터베이스 업데이트, 파일처리 같은 중요한 작업은 일반 스레드로 작업하는 것이 좋다 ..

Java 2024.10.17

Java_스레드의 안전종료

스레드는 자신의 run() 메소드가 보두 실행되면 자동적으로 종료되지만 경우에 따라서 실행 중인 스레드를 즉시 종료할 필요가 있다 스레드를 강제종료시키기 위해 thread는 stop() 메소드를 제공하고 있으나 더이상 사용하지 않는다 그 이유는 스레드를 갑자기 종료하게 되면 사용중이던 리소스들이 불안전한 상태로 남겨지기 때문이다 * 리소스 : 파일, 네트워크 연결 등스레드를 안전하게 종요하는 방법은 사용하던 리소스들을 정리하고 run() 메소드를 빨ㄹ ㅣ종료하는 것이다  interrupt() 메서드는 스레드에  인터럽트(중단요청)을 모내는 메서드이다 즉시 멈추는 게 아니라 스레드가 중단되었음을 알리는 신호를 보낸다 스레드가 이 신호를 받으면 스스로 종료를 준비할 수 있게한다  class MyThread ..

Java 2024.10.17

Java_Wait() notify() 이용한 스레드 제어

* notify : 알리다* wait : 기다리다  Java 에서 Wait() notify() : 여러 스레드가 협력해서 일할 때 순서를 맞추기 위해 사용하는 메서드 (교대작업)이 방법의 핵심은 공유객체이다 공유객체는 두 스레드가 작업할 내용을 각각 동기화 메소드로 정해놓고 한 스레드가 작업을 완료하면 notify() 메소드 호출해서 일시정지상태에 다른 스레드를 실행대기 상태로 만들고 자신은 두 번 작업을 하지 않도록 Wait() 메소드를 호출하여 일시정지 상태로 만든다 wait() : 스레드가 잠깐 멈추는 것 notify() : 기다리고 있는 스레드를 실행대기상태로 만드는 것 notifyAll() : wait()에 의해 일시 정지된 모든 스레드를 실행대기상태로 만드는 것 > 위 메소드는 동기화 메소드 ..

Java 2024.10.17

Java_스레드 상태

Java에서 스레드가 어떤 단계에 있는지 알려주는 것이다  자바 스레드의 6가지 상태  상태설명NEW스레드가 생성되었으나 아직 시작되지 않은 상태start()메서드 호출 전RUNNABLE스레드가 실행 중이거나 실행될 준비가 된 상태 (실행가능한 상태)BLOCKED자원을 기다리고 있는 상태 (다른 스레드가 자원을 점유 중)WAITING다른 스레드의 신호를 기다리며 무기한 대기 중인 상태TIMED_WAITING일정 시간 동안 대기 중인 상태 (예: sleep(), wait(시간))TERMINATED스레드가 종료된 상태 (작업 완료 또는 예외 발생) 메서드가 스레드 상태에 어떻게 영향을 미치는지 더 명확하게 이해할 수 있습니다.메서드설명상태 변화구분구분메소드설명 일시 정지로 보냄sleep(long millis..

Java 2024.10.17

Java_스레드 이름

스레드 이름 : 스레드를 구분 할 수 있도록 붙여주는 라벨이다 자바 프로그램에서 여러 스레드가 실행될 때 각각의 스레드르 구분하기 위해 붙여주는 고유한이름이다 메인 스레드는 main , 작업스레드는 Thread-n 이라는 이름자동적으로 부여된다 사용자가 스레드 이름을 직접설정 할 수도 있다 스레드에 이름을 붙이는 이유는 여러스레드가 동시에 실행될 떄 , 어떤 스레드가 어떤 일을 하는지 쉽게 파악하기 위해서이다 . 이는 스레드가 문제를 일으킬 때 문제추적을 쉽게 할 수 있는 디버깅의 편리를 도와준다 1) 생성할 때 이름을 설정하는 방법 public class Main { public static void main(String[] args) { Thread thread1 = new Thre..

Java 2024.10.17

Java_메인 스레드

메인 스레드 : 자바 프로그램을 실행하면 처음에 시작되는 스레드가 메인 스레드(Main-thread) 이다 프로그램의 기본 뼈대이고 프로그램의 시작과 끝을 관리한다 모든 자바 프로그램은 메인 스레드에서 시작된다 public class Main { // main 메서드에서 시작!! public static void main(String[] args) { System.out.println("Hello, Java!"); }} - 메인스레드가 main 메서드 안의 코드를 순서대로 실행한다- 만약 main 메서드 안에서 다른 스레드를 만들면 메인 스레드는 다른 스레드들을 관리하는 동시에 여러작업이 실행될 수 있도록 도와준다 - 메인 스레드가 종료되면 프로그램도 종료된다  구분 싱글 스레드..

Java 2024.10.17

Java_멀티 스레드와 멀티 프로세스의 차이

*스레드(thread): 다중 작업 환경에서 운영 체제가 여러 프로그램을 병행하여 처리할 때 효율적인 처리를 위하여 분할한 처리 단위. Java에서의 멀티 스레드 : 한 프로그램이 여러 작업(스레드)을 동시에 처리할 수 있도록 도와주는 기능 (병렬처리)멀티스레드에서 스레드 : 프로그램 안에서 독립적으로 실행되는 작은 작업 단위 > 스레드들이 각자 독립적으로 움직이기때문에 하나의 프로그램이 마치 여러 프로그램처럼 동시에 여러 일을 처리할 수 있음  * 멀티 프로세스 (Multi-process): 프로세스는 프로그램이 실행되는 독립된 단위예) 컴퓨터에서 브라우저와 메신저 프로그램을 동시에 실행할 때 각각의 프로그램이 독립된 프로세스를 실행 멀티프로세스는 여러개의 프로세스를 동시에 실행하는 것이다 각각의 프로..

Java 2024.10.17

Java_제네릭(Generics)

제네릭(Generics) : 다양한 타입의 객체를 다룰 때 코드의 재사용성과 안전성을 높여주는 기능이다제네릭을 사용하면 여러가지 자료형에 대해 동일한 로직을 작성할 수 있다 타입 안전성을 보장하고, 잘못된 자료형을 사용하는 실수를 줄일 수 있고 코드의 재사용성을 높일 수 있다 package ch13;public class Box { public Object content;} // Box에 넣을 내용물로 content 필드를 선언한다 // Object 타입은 모든 클래스의 최상위 부모클래스이다 // 따라서 모든 객체는 부모타입인 Object로 자동 타입 변환이 되므로 // content 필드에는 어떤 객체든 대입이 가능하다Box box = new Box();box.content = 모든 객체;// Box안..

Java 2024.10.16

Java_어노테이션(Annotation)

Java 코드에서 @으로 작성되는 요소를 어노테이션(Annotation) 이라고 한다코드에 추가적인 정보를 제공하는 메타데이터 역할을 한다 어노테이션은 클래스,인터페이스를 컴파일하거나 실행할 때 어떻게 처리해야 할 것인지를 알려주는 설정 정보이다 1. 컴파일시 사용하는 정보전달 2. 빌드 툴이 코드를 자동으로 생성 할 때 사용하는 정보 전달3. 실행 시 특정 기능을 처리할 때 사용하는 정보 전달@Override메서드가 상위 클래스 또는 인터페이스의 메서드를 재정의하고 있음을 나타냅니다.@Deprecated해당 요소(클래스, 메서드, 필드 등)가 더 이상 사용되지 않음을 나타냅니다. 컴파일러가 경고를 출력합니다.@SuppressWarnings특정 컴파일러 경고를 무시하도록 합니다. 예: "unchecked..

Java 2024.10.16

Java_리플렉션

메타정보 : 패키지정보, 타입정보, 멤버(생성자, 필드, 메소드) 정보 등을 말한다  자바는 클래스와 인터페이스의 메타정보를 Class 객체로 관리한다메타 정보를 프로그램에서 읽고 수정하는 행위를 리플렉션(reflection) 이라고 한다 -리플렉션의 주요 클래스 및 인터페이스Class: 클래스의 메타데이터를 얻기 위한 기본 클래스Method : 클래스의 메서드 정보를나타내는 클래스Filed : 클래스의 필드 정보를 나타내는 클래스Constructor : 클래스의 생성자 정보를 나타내는 클래스 프로그램에서 Class 객체를 얻으려면 다음 3가지 방법중 하나를 이용해보자1. Class clazz = 클래스이름.class;예) Class clazz = String.class;2. Class clazz = C..

Java 2024.10.16