Language60 [Java] 쓰레드 5 - 쓰레드의 실행제어(sleep, interrupt, join, yield) 쓰레드의 스케줄링 관련 메서드 메서드 설 명 static void sleep(long millis) static void sleep(long millis, int nanos) 지정된 시간(천분의 1초 단위)동안 쓰레드를 일시정지시킨다. 지정한 시간이 지나고 나면, 자동적으로 다시 실행대기상태가 된다. void join() void join(long millis) void join(long millis, int nanos) 지정된 시간동안 쓰레드가 실행되도록 한다. 지정된 시간이 지나거나 작업이 종료되면 join()을 호출한 쓰레드로 다시 돌아와 실행을 계속한다. void interrupt() sleep()이나 join()에 의해 일시정지상태인 쓰레드를 깨워서 실행대기상태로 만든다. 해당 쓰레드에서는 In.. 2022. 3. 14. [Java] 쓰레드 4 - 데몬 쓰레드(daemon thread) 데몬 쓰레드 데몬 쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행하는 쓰레드이다. 가비지 컬렉터, 워드프로세서의 자동저장, 화면자동갱신 등이 이에 속함 데몬 쓰레드는 무한루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다. 데몬 쓰레드 설정방법 일반 쓰레드와 작성방법과 실행방법이 같음 쓰레드 생성 후 실행전에 setDaemon(true)를 호출해야함. boolean isDaemon() : 쓰레드가 데몬쓰레드인지 확인하여 boolean값 반환. void setDaemon(boolean on) : 쓰레드를 데몬 쓰레드로 또는 사용자 쓰레드로 변경. 매개변수 on의 값을 true로 지정하면 데몬 쓰레드가 된다. class ThreadE.. 2022. 3. 14. [Java] 쓰레드 3 - 쓰레드 우선순위와 쓰레드 그룹 우선순위 지정 쓰레드는 우선순위를 통해 각 쓰레드 별 작업시간을 다르게 가지게 할 수 있다. void setPriority(int newPriority) : 쓰레드의 우선순위를 지정한 값으로 변경한다. void getPriority() : 쓰레드의 우선순위를 반환한다. public static final int MAX_PRIORITY = 10 // 최대우선순위 public static final int MIN_PRIORITY = 1 // 최소우선순위 public static final int NORM_PRIORITY = 5 // 보통우선순위 쓰레드가 가질 수 있는 우선순위 범위는 1~10이며 숫자가 높을수록 우선순위가 높다. 쓰레드의 우선순위는 쓰레드를 생성한 쓰레드로부터 상속받는다. main메서드를 수.. 2022. 3. 14. [Java] 쓰레드 2 - 싱글쓰레드와 멀티쓰레드 싱글 쓰레드와 멀티 쓰레드 싱글코어에서 하나의 쓰레드로 두개의 작업을 수행한 시간과, 두개의 쓰레드로 두개의 작업을 수행한 시간은 거의 비슷하다. 두 개의 쓰레드로 수행한 게 좀 더 걸리게 되는데, 쓰레드간의 작업전환(context switching)에 시간이 걸리기 때문이다. 작업전환에는 다음에 실행시켜야할 위치(PC, 프로그램 카운터) 등의 정보를 저장하고 읽어오는 시간이 소요된다. 쓰레드의 스위칭보다 프로세스의 스위칭이 더 많은 정보가 교환되므로 더 많은 시간이 소요. class ThreadEx5 { static long startTime = 0; public static void main(String args[]) { ThreadEx5_1 th1 = new ThreadEx5_1(); th1.sta.. 2022. 3. 13. [Java] 쓰레드 1 - 구현 및 실행(start, run) 프로세스와 쓰레드 프로세스란 '실행중인 프로그램'을 뜻한다. 프로그램을 실행하면 OS(운영체제)로부터 실행에 필요한 자원(메모리)를 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있고, 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 쓰레드이다. 모든 프로세스는 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 '멀티쓰레드 프로세스(muti-threaded process)'라고 한다. 멀티태스킹과 멀티쓰레딩 대부분의 OS는 멀티태스킹(다중작업)을 지원하기 때문에 여러 개의 프로세스가 동시에 실행될 수 있다. 이와 유사하게 멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것이다. CP.. 2022. 3. 13. [Java] 제네릭(Generic) 제네릭이란 다양한 타입의 객체들을 다루기위해 클래스,인터페이스,메서드에 쓰이는 타입 매개 변수이다. 장점 1. 타입 안정성을 제공 2. 타입체크와 형변환을 생략가능 제네릭 클래스 선언 제네릭 타입은 클래스와 메서드에 선언 가능하다. class Box{ Object item; void setItem(Object item){ this.item = item; } Object getItem(){ return item; } } // 제네릭 class Box{ // 제네릭 타입 T를 선언 T item; void setItem(T item){ this.item = item; } T getItem(){ return item; } } 클래스 옆에 ''를 붙여서 선언. Obejct를 모두 'T'로 변경 여기서 T는 '타입.. 2022. 3. 11. [Java] 정규식(Reualar Expression), 정규표현식(Regex) 정규식이란 정규식은 텍스트 데이터 중 원하는 조건과 일치하는 문자열을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다. 정규식 사용법 java.util.regex.* 을 사용한다. 패턴을 만들어두고, 해당 패턴과 일치하는 지를 확인한다. import java.util.regex.*;// Pattern과 Matcher가 속한 패키지 class RegularEx1 { public static void main(String[] args) { String pattern = "c[a-z]*"; //c로 시작하고 a~z사이의 단어가 없거나 1개이상 있을수도 있음. String val = "count"; boolean regex = Pattern.matches(pattern.. 2022. 3. 9. [Java] Objects 클래스 Objects클래스 object클래스의 보조 클래스로 모든 메서드가 'static'이다. isNull(), notNull(), requireNonNull() isNull()과 notNull()은 해당 객체가 null인지 아닌지를 boolean값으로 반환한다. requireNonNull()은 해당 객체가 널이면, NullPointerException을 발생시킨다. 두번째 매개변수로 지정하는 문자열은 예외 메시지가 된다. void setName(String name){ if(name == null){ throw new NullPointerException("name must not be null."); } this.name = name; } 변경 후 void setName(String name){ this... 2022. 3. 8. 이전 1 2 3 4 5 6 ··· 8 다음