Thread Group - 관련된 스레드를 묶어서 관리할 목적으로 사용. - JVM이 실행될때 - system 스레드 그룹을 만듬 - JVM 운영에 필요한 스레드들을 생성 - system 스레드 그룹에 포함시킴 스레드 그룹 이름 얻기 ThreadGroup group = Thread.currentThread().getThreadGroup(); String groupName = group.getName(); 스레드 그룹 예제 public static void main(String[] args) { ThreadGroup group = Thread.currentThread().getThreadGroup(); //System.out.println(group.getName()); AutoSaveThread auto..
스레드 상태제어 - 실행중인 스레드의 상태를 변경하는 것. - 메소드로 주로 제어 - interrupt(), sleep(), join(), wait(), yield() notify(), notifyAll() 등의 메소드가 존재. - 이중 notify(), notifyAll(), wait() 메소드는 Object 클래스의 메소드이고 나머지는 Thread 클래스의 메소드. 일정시간동안 일시정지 : sleep() - 실행중인 스레드를 일시정지. - 매개값으로 밀리초를 넣어주면 해당 시간동안 sleep() 메소드를 만나는 스레드는 일시정지함. - 일시정지 상태에서 interrupt() 메소드를 호출할 경우 InterruptedException이 발생됨. try{ Thread.sleep(1000); //1초간 일..
공유 객체 사용시 - 싱글 스레드의 경우는 고민할 경우가 거의 없다. - 멀티 스레드의 경우 스레드간의 하나의 객체 공유 시 디버깅하기 어려운 오류가 나타날 수 있다. Tread-1이 공유객체의 멤버변수에 할당된 값을 변경. -> 그사이 Thread-2가 공유 객체의 멤버변수에 할당된 값을(null이 아닌지 모르고) 엎어침. -> Thread-1 공유객체 사용하려는데 값이바뀜. -> 오류!! 이를 방지하기 위해 단 하나의 스레드만을 실행할 수 있는 임계영역을 지정해야 한다. 즉, 객체에 잠금을 걸어두어 하나의 스레드만이 접근가능하고 나머지 스레드는 대기하도록 만든다. 키워드 : synchronized 동기화(synchronized) 메소드 public synchronized void method(){ /..
스레드의 우선순위 동시성 : 멀티작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가면서 실행하는 성질 병렬성 : 멀티작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질 스레드 스케줄링 - 스레드의 갯수가 코어의 수보다 많을 경우에 스레드를 어떤 순서에 의해 동시성으로 실행할 것인가에 대한 계획. - 아주 짧은 시간 스레드의 run 메소드를 번갈아가면서 실행한다. 우선순위(priority) 방식 - 우선순위가 높은 스레드가 실행상태를 더 많이 가져감. - 객체에 우선순위를 부여하여 개발자가 제어가능. - 1부터 10까지 우선순위, 높으면 먼저 실행 thread.setPriority(우선순위); 우선순위 상수 : Thread.MAX_PRIORITY(10), Thread.NORM_PRIORITY(5..
프로세스와 스레드 프로세스 운영체제에서는 실행중인 하나의 어플리케이션을 프로세스라고 함. 운영체제로부터 실행에 필요한 메모리를 할당받아 어플리케이션의 코드를 실행. 스레드 프로세스를 이루는 코드의 실행흐름. 하나의 스레드는 하나의 코드 실행흐름임. 멀티 프로세스 서로 독립적. 하나의 프로세스에서 오류가 발생하더라도 다른 프로세스에 영향을 미치지 않음. 멀티 스레드 하나의 프로세스 내부에 존재하기 때문에 하나의 스레드가 예외를 던지면 프로세스 하나가 아예 동작하지 않을 수 있음 -> 예외 처리 중요. 메인 스레드 자바 어플리케이션은 메인스레드가 main 메소드를 실행하면서 시작함. 스레드의 생성 1. Thread 클래스로부터 직접 생성 Thread thread = new Thread(Runnable tar..
Garbage Collector- 가비지 컬렉터는 동적으로 할당된 메모리들 가운데 더이상 사용하지 않는 메모리(인스턴스)를 찾아서 자동으로 수집해서 쓸모없는 메모리를 해제하는 기법이다. - 더이상 사용하지 않는 메모리는 어떠한 변수도 이것을 참조하지 않는 것을 의미한다. 123456789101112public class Example{ public static void main(String[] args){ String a = new String("good"); String b = new String("Bad"); String c = new String("Normal"); String d,e; a = null; d = c; c = null; }}Colored by Color Scriptercs 다음과 같은..
람다식을 배운 목적 1. 익명객체를 쉽게 만들기 위해서 - 배열(컬렉션) 2. 스트림을 사용하기 위해스트림(Stream) - JDK 1.8에서 추가 - 배열(컬렉션)을 탐색하기 위한 도구. - 람다식으로 구성된 도구.(적은 코드로 작성하기 편함) - Iterator 작업을 대신하는 경우가 많음 - 내부 반복자탐색하는 방법1. for2. for each3. iterator4. stream (현재 할것) 스트림 기본 예제 List list = new ArrayList();list.add("볼펜");list.add("지우개");list.add("샤프");list.add("형광펜");list.add("커터칼"); 다음과 같은 List가 있을 때, list의 내용물을 하나씩 출력하고 싶다면...? 1. Itera..
표준 API함수적 인터페이스 - JDK 1.8 부터 제공 - java.util.function 패키지 - 함수적 인터페이스 집합 패키지 - 오로지 람다식만을 지원하기 위해 만들어진 인터페이스 모음 - 람다식 타겟 타입 = 표준 API 함수적 인터페이스 + 사용자 정의 인터페이스 표준 API함수적 인터페이스 종류 - 추상메소드 딱 1개 1. Consumer : 매개변수O, 반환값X -> 추상메소드 제공.2. Supplier : 매개변수X, 반환값O3. Function : 매개변수O, 반환값O, 주로 매개변수를 반환값 타입으로 변환 후 반환4. Operator : 매개변수O, 반환값O, 주로 매개변수를 연산 후 결과값 반환 역할5. Predicate : 매개변수O, 반환값O, 주로 매개변수를 조사한 후 논리..