분류 전체보기 (894) 썸네일형 리스트형 16 -2 장 제네릭의 문법 강한 타입 체크(strong type checking) -제네릭을 사용하면 모든 타입의 상품을 저장할 수 있으면서도 잘못된 캐스팅을 할 때 문법 오류를 발생시켜 잘못된 캐스팅으로 발생할 수 있는 문제를 사전에 예방 1. 제네릭 클래스와 제네릭 인터페이스 정의하기 - 클래스명 다음에 삽입 - 제네릭 클래스 //제네릭 타입 변수명이 1개 일때 접근 지정자 class 클래스명 { //타입 T를 사용한 코드 } //제네릭 타입 변수명이 2개 일때 접근 지정자 class 클래스명 { //타입 K,T를 사용한 코드 } public class MyClass { private T t; public T get(){ return t; } public void set(T t) { this.t=t; } } - 제네릭 인터페이.. 16 -1장 제네릭 클래스와 제네릭 인터페이스 1. 제네릭 없이 여러 객체를 저장하는 클래스 작성하기 ex) 사과와 연필을 각각 저장 및 관리 - 사과를 저장(set)하고 가져오기(get) class Apple { } class Goods1 { private Apple apple = new Apple(); public Apple get() { return apple; } public void set(Apple apple) { this.apple =apple; } } Goods1 goods1 = new Goods1(); goods1.set(new Apple()); Apple apple = goods1.get(); - 연필을 저장(set)하고 가져오기(get) class Pencil { } class Goods2 { private Pencil penci.. 15 - 5장 쓰레드의 상태 쓰레드의 상태 - Thread.State 타입으로 정의 - Thread의 인스턴스 메서드인 getState()로 가져올 수 있음 - getState() -> 쓰레드의 상태를 Thread.State 타입에 저장된 문자열 상숫값 중 하나로 리턴 -> Thread.State는 enum 타입 -> Thread.State의 내부에는 6개의 문자열 상수 (NEW, RUNNABLE, TERMLNATED, TLMED_WAITING, BLOCKED, WAITING)가 저장 -쓰레드의 상태에 따른 동작 수행 Thread.State state = myThread.getState(); swich(state) { case Thread.State.NEW; //... case Thread.State.RUNNABLE; //... c.. 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); //부모 생성자 호출 } } - 기본 생성자 - 문자열을 입력받는 생성자 -> 예외 메시지를 전달받아 예외 객체를 생성하는 .. 이전 1 ··· 88 89 90 91 92 93 94 ··· 112 다음