Java 148

129. 쓰레드의 우선순위, 쓰레드 그룹 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 쓰레드의 우선순위(priority of thread)작업의 중요도에 따라 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업시간을 갖게 할 수 있다.우선순위가 높다고 무조건 빨리 끝나지 않는다.void setPriority(int newPriority) // 쓰레드의 우선순위를 지정한 값으로 변경한다.int getPriority() // 쓰레드의 우선순위를 반환한다.public static final int MAX_PRIORITY = 10 // 최대우선순위 10public static final int MIN_PRIORITY = 1 // 최소우선순위 1public static final int NORM_PRIORITY = 5 // 보통우선순위 5 2. 예제public class Ex0..

Java 2025.01.06

128. 싱글쓰레드와 멀티쓰레드, 쓰레드의 I_O블락킹 - 패스트캠퍼스 백엔드 부트캠프 3기

1. main쓰레드main메서드의 코드를 수행하는 쓰레드쓰레드는 '사용자 쓰레드'(main)와 '데몬 쓰레드'(보조) 두 종료가 있다.실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다.public class Ex02 { static long startTime = 0; public static void main(String[] args) { ThreadEx11_1 th1 = new ThreadEx11_1(); ThreadEx11_2 th2 = new ThreadEx11_2(); th1.start(); th2.start(); startTime = System.currentTimeMillis(); try{ ..

Java 2025.01.06

127. 쓰레드의 구현과 실행 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 쓰레드의 구현과 실행Thread클래스를 상속class MyThread extends Thread { public void run() { // Thread클래스의 run()을 오버라이딩 ... }}MyThread t1 = new MyThread(); // 쓰레드의 생성t1.start() // 쓰레드의 실행Runnable인터페이스를 구현class MyThread2 implements Runnable { public void run() { // Runnable인터페이스의 추상메서드 run()을 구현 ... }}public interface Runnable { // 구현되어 있음 public abstract void run();}Runnable r = new ..

Java 2025.01.06

126. 프로세스와 쓰레드 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 프로세스와 쓰레드(process & thread)프로세스 : 실행 중인 프로그램, 자원(resources)과 쓰레드로 구성쓰레드 : 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다.싱글 쓰레드 프로세스 : 자원 + 쓰레드멀티 쓰레드 프로세스 : 자원 + 쓰레드+쓰레드+...+쓰레드2. 멀티쓰레드의 장단점장점시스템 자원을 보다 효율적으로 사용할 수 있다.사용자에 대한 응답성이 향상된다.작업이 분리되어 코드가 간결해진다.단점동기화에 주의해야 한다.교착상태가 발생하지 않도록 주의해야 한다.각 쓰레드가 효율적으로 고르게 실행될 수 있게 해야 한다.

Java 2025.01.06

125. 애너테이션 타입 정의, 요소 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 애너테이션 타입 정의하기애너테이션을 직접 만들어 쓸 수 있다.@interface 애너테이션이름 { 타입 요소이름(); // 애너테이션의 요소를 선언한다. ...}@interface DateTime { String yymmdd(); String hhmmss();}애너테이션의 메서드는 추상 메서드이며, 애너테이션을 적용할 때 지정(순서X)@interface TestInfo { int count(); String testedBy(); String[] testTools(); TestType testType(); // enum testType { FIRST, FINAL } DateTime testDate(); // 자신이 아닌 다른 애너테이션(@DateTi..

Java 2025.01.06

124. 메타애너테이션 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 메타 에너테이션애너테이션을 위한 애너테이션애너테이션설명@Target애너테이션이 적용가능한 대상을 지정하는데 사용한다.@Documented애너테이션 정보다 javadoc으로 작성된 문서에 포함되게 한다.@Inherited애너테이션이 자손 클래스에 상속되도록 한다.@Retention애너테이션이 유지되는 범위를 지정하는데 사용한다.@Repeatable애너테이션을 반복해서 적용할 수 있게 한다.(JDK1.8) 2. @Target애너테이션을 정의할 때, 적용대상 지정에 사용@Target({FIELD, TYPE, TYPE_USE}) // 적용 대상이 FIELD, TYPE, TYPE_USTpublic @interface MyAnnotation { } // MyAnnotation을 정의@MyAnnotation ..

Java 2025.01.06

123. 애너테이션 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 애너테이션이란?주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공@Test // 이 메서드가 테스트 대상임을 테스트 프로그램에게 알린다.public void method() { ...} 2. 표준 애너테이션Java에서 제공하는 애너테이션애너테이션설명@Override컴파일러에게 오버라이딩하는 메서드라는 것을 알린다.@Deprecated앞으로 사용하지 않을 것을 권장하는 대상에 붙인다.@SuppressWarnings컴파일러의 특정 경고메시지가 나타나지 않게 해준다.@SafeVarargs지네릭스 타입의 가변인자에 사용한다.(JDK1.7)@FunctionalInterface함수형 인터페이스라는 것을 알린다(JDK1.8)@Nativenative메서드에서 참조되는 상수 앞에 붙인다.(JDK1..

Java 2025.01.06

122. 열거형멤버 추가하기 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 열거형에 멤버 추가하기불연속적인 열거형 상수의 경우, 원하는 값을 괄호()안에 적는다.enum Direction { EAST(1), SOUTH(5), WEST(-1), NORTH(10) } // 여러개 가능 EAST(1, ">")괄호()를 사용하려면, 인스턴스 변수와 생성자를 새로 추가해 줘야 한다.enum Direction { EAST(1), SOUTH(5), WEST(-1), NORTH(10); // 끝에 ';'를 추가해야 한다. private final int value; // 정수를 저장할 필드(인스턴스 변수)를 추가 Direction(int value) { this.value = value; } // 생성자를 추가 public int getValue() ..

Java 2025.01.03

121. 열거형 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 열거형(enum)관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; static final int TWO = 0; static final int THREE = 1; static final int FOUR = 2; final int kind; final int num;}if(Card.CLOVER == Card.TWO) // true지만 false이어야 의미상 맞음.class Card { ..

Java 2025.01.03

120. 지네릭형변환 - 패스트캠퍼스 백엔드 부트캠프 3기

1. 지네릭 타입의 형변환지네릭 타입과 원시 타입 간의 형변환은 바람직 하지 않다.(경고 발생)Box objBox = null;Box box = (Box)objBox; // OK. 지네릭 타입 -> 원시 타입, 경고 발생objBox = (Box)box; // OK. 원시 타입 -> 지네릭 타입, 경고 발생objBox = (Box)strBox; // 에러. Box -> BoxstrBox = (Box)objBox; // 에러. Box -> Box와일드 카드가 사용된 지네릭 타입으로는 형변환 가능Box wBox = (Box)new Box(); // OK.Box wBox = new Box(); // 위 문장과 동일 2. 지네릭 타입의 제거컴파일러는 지네릭 타입을 제거하고, 필요한 곳에 형변환을 넣는다.지네릭 ..

Java 2025.01.03