Java (501) 썸네일형 리스트형 15 - 4 장 쓰레드의 동기화 1. 동기화의 개념 동기화 (synchoronized) - 하나의 작업이 완전히 완료된 후 다른 작업을 수행하는 것 - 한 쓰레드가 객체를 모두 사용해야 다음 쓰레드가 사용할 수 있도록 설정 - 한 객체를 두 쓰레드가 동시에 사용할 수 없도록 설정 비동기 (asynchronous) - 하나의 작업 명령 이후 완료 여부와 상관없이 바로 다른 작업 명령을 수행하는 것 2. 동기화의 필요성 - 2개의 쓰레드가 하나의 객체를 공유할 때 동기화의 필요성 - 객체 내부의 data 필드에 3의 값을 저장하고 있는 MyData 객체 1개 - MyData 객체를 동일한 작업을 수행하는 2개의 plusThread 쓰레드가 공유 - 2개의 쓰레드가 동시에 MyData객체 내의 데이터값을 1씩 증가 => 결과값 5? no -.. 15 - 3장 쓰레드의 속성 1. 현재 쓰레드 객체 참좃값 얻어오기 - Thread 클래스를 직접 정의하고 객체를 생성해 사용할 때 참조 변수를 이용해 언제든지 쓰레드 객체의 속성을 가져올 수 있음 - 객체를 참조할 수 없는 상황 -> 직접 쓰레드 객체 생성 x ( 자바의 쓰레드 풀 or main 쓰레드) -> 객체를 생성할때 참조 변수를 정의하지 않은 경우 (new Threrad().start()) - 쓰레드 객체를 참조할 수 없을 때 Thread 클래스의 정적 메서드인 currentThread()메서드를 이용해 현재 쓰레드 객체의 참좃값을 얻어 올 수 있음 static Thread Thread.currentThread() 2. 실행 중인 쓰레드의 개수 가져오기 - 여러 개의 쓰레드가 실행되고 있을 때 현재 실행(active)중인.. 15 -2장 쓰레드의 생성 및 실행 쓰레드 생성방법 - 방법 1 . Thread 클래스를 상속받아 run() 메서드를 오버라이딩하는 것 -> run() 메서드의 내부에서 작성된 내용이 바로 CPU를 독립적으로 사용하면서 동시에 실행되는 것 - 방법 2.1 Runnable 인터페이스를 구현한 Runnable 객체를 생성 -> 이 인터페이스는 추상메서드로 run() 메서드를 갖고 있음 -> 인터페이스 객체 생성과정에서 run() 메서드를 구현해야 함 - 방법 2.2 Thread 객체를 생성할때 1단계에서 생성한 Runnable 객체를 생성자로 전달 - 생성한 쓰레드를 실행하는 방법은 객체를 어떤 방법으로 실행했든 Thread 객체 내의 start() 메서드를 호출하는 것 - run()의 내용을 실행하기 위해서는 반드시 start() 메서드를 .. 15 - 1장 프로그램, 프로세스, 쓰레드 - 여러 개의 작업이 동시에 수행되도록 하기 위해서는 한정된 코어의 수를 갖는 CPU를 여러 개의 작업이 나눠 사용 해야함 1. 프로그램과 프로세스 개념 - 컴퓨터 주요 구성 요소 - >중앙처리장치(CPU) , 메모리(Memory), 하드 디스크(Hard disk) - >CPU는 연산을 수행함으로써 실제 프로그램을 실행하는 장치로, 가장 빠른 속도 - >하드 디스크는 데이터의 저장역할을 수행, 가장 낮은 속도 - >속도 CPU > 메모리 > 하드 디스크 - >실제 하드디스크에 저장된 프로그램(program)을 실행되기 위해서는 프로그램을 메모리로 로딩(loading)하여 프로세스(process)상태로 만들어야 함 - > 로딩된 메모리의 프로세스가 CPU와 비슷한 속도로 대화하면서 프로그램을 실행 - 프로.. 14 - 4장 사용자 정의 예외 클래스 1. 사용자 정의 예외 클래스 생성 방법 1) 사용자 정의 예외 클래스 작성 - Exception을 상속해 일반 예외 클래스로 만드는 방법 class MyException extends Exception { MyException() { } MyException(String s) { super(s); //부모 생성자 호출 } } - RuntimeException을 상속해 실행 예외 클래스로 만드는 방법 class MYRTException extends RuntimeException { MyRTException() { } MyRTException(String s) { super(s); //부모 생성자 호출 } } - 기본 생성자 - 문자열을 입력받는 생성자 -> 예외 메시지를 전달받아 예외 객체를 생성하는 .. 14 - 3장 예외 전가 예외 처리 2가지 방법 - Add throws declaration => 예외 전가 - Surround with try/catch => try-catch 구문 이용 - 예외를 전가 하면 예외 처리의 의무를 호출한 메서드가 갖게 됨 - 상위의 메서드도 자신을 호출한 지점으로 예외 전가 가능 1. 예외 전가 문법 리턴 타입 메서드명(입력매개변수) throws 예외 클래스 명 { //예외 발생 코드 } ex) abc() 메서드에서 bcd() 메서드를 호출하고, bcd() 메서드 내부에 예외가 발생할 수 있는 코드 포함한 경우 1) bcd()메서드가 직접 예외 처리 void abc() { bcd(); //1.호출 } void bcd() { try { //2. 예외 처리 //예외 가능 블록 }catch(예외 클래.. 14 - 2장 예외 처리 1. 예외 처리 문법 try { //일반 예외, 실행 예외 발생 가능 코드 } catch (예외 클래스명 참조 변수명) { //예외가 발생했을 떄 처리 } finally { //예외 발생 여부에 상관없이 무조건 실행 } -try {} -> 예외가 발생할 수 있는 코드 포함 - catch{} -> 예외가 발생했을 때 처리할 코드 포함 -> 모든 예외를 처리하는 것은 아니며, 소괄호 안의 예외 타입에 해당하는 예외에 한해서만 처리 가능 -> 예외가 발생했을 때만 동작하며 예외 없이 정상적으로 동작할 때는 실행되지 않음 - finally {} -> 예외가 발생하든, 발생하지 않든 항상 실행되는 블록 -> 리소스 해제, try{}, catch{} 블록의 공통 기능 코드 포함 -> 생략 가능 try { Syste.. 14 - 1장 예외 1. 예외와 에러의 차이점 1) 예외 - 개발자가 해결할 수 있는 오류 - 오류가 발생했을 때 차선책을 선택 - 예외의 최상위 클래스 Exception 클래스 ->Throwable 클래스 상속 2)에러 - 자바 가상 머신 자체에서 발생하는 오류 - 개발자가 해결할 수 없는 오류 - 에러의 최상위 클래스 Error 클래스 -> Throwable 클래스 상속 - Error 클래스와 Exception 클래스의 상속 구조 2. 예외 클래스의 상속구조 -Exception 클래스는 일반예외(checked exception)클래스와 실행예외(unchecked exception) 클래스로 나뉨 1) 일반 예외 - Exception 클래스에서 직접 상속받은 예외 클래스들이 처리 - 컴파일 전에 예외발생 문법을 검사 - .. 이전 1 ··· 55 56 57 58 59 60 61 ··· 63 다음