동기화란? 스레드 간섭과 메모리 일치 오류의 문제를 막는 도구 * 스레드는 동일한 자원을 고유하기 때문에 매우 효율적으로 작업을 처리할 수 있는 반면에 다수의 스레드가 공유된 데이터에 접근할 때 방생하는 문제로 스레드 간섭, 메모리 일치 오류 두가지 문제가 발생한다. ˚ 스레드의 동기화동기화된 메소드 (Synchronized Methods) 동기화된 메소드는 동시 호출되더라도 겹치지 않는다. 스레드가 동기화 된 메소드를 실행하면 그 스레드가 종료될 때까지 모든 스레드는 중지된다. 동기화된 메소드가 종료되면 자동으로 이후 동기화된 메소드 호출은 변경된 상태를 볼 수 있다. Class ExampleSynchronized{ private int money = 1000; public synchronized vo..
쓰레드(Thread)란? 하나의 프로세스 내에서 존재하며, 경량 프로세스라 불린다.프로세스의 자원을 공유한다.하나의 프로세스는 한 개 이상의 스레드를 가지며, 한개의 (메인 스레드)로 시작 * 프로세스 - 실행중인 프로그램이다. - 프로그램과 어플리케이션과 같은 의미로 사용 - 자신만의 자원을 갖는다. - 다른 프로세스와 완전히 분리된다. * 스레드멀티 스레드(Multi-Thread) 하나의 프로세스 안에 여러개의 메소드를 사용한다.(작업이 동시에 진행된다.) 단일 스레드(Single-Thread) 하나의 프로세스 안에 메인스레드만 존재한다.(프로세스 = 스레드) 스레드의 생성 스레드의 실행 Thread 클래스 Class ExampleThread extends Thread{ public void run(..
컬렉션 프레임워크란 ? 배열의 단점을 보완한 데이터를 저장하는 클래스들을 표준화한 설계이다.다수의 데이터를 쉽게 처리할 수 있는 방법을 제공하는 클래스들로 구성 * 컬렉션(Collection): 다수의 데이터, 데이터 그룹* 프레임워크(Framework): 표준화, 정형화된 체계적인 프로그래밍 방식 인터페이스 구현 클래스 특징 List ArrayList 순서가 있는 데이터들의 집합, 데이터의 중복을 허용 => 데이터를 추가(add)하면 앞에서 부터 순차적으로 데이터가 삽입된다. 그래서 각각의 저장되어 있는 공간들은 고유한 색인(index)를 가진다. LinkedList Stack Vector Set HashSet 순서를 유지하지 않는 데이터들의 집합, 데이터의 중복을 허용하지 않는다. => 집합이며 데이..
제네릭 하나의 코드를 여러 타입에 대하여 재사용하는 기술 C++의 Template 기법과 비슷 구체적인 타입을 사용하지 않고 변수 형태로 적는다. 타입 매개변수: 클래스 타입, 인터페이스 타입, 배열 타입 등을 나타낼수 있다. * 보통은 대문자를 이용한다 제네릭을 사용하는 이유? 데이터를 꺼낼 때 마다 타입 변환을 해야하는 번거로움이 있을 수 있기 때문이다.(다형성의 Upcasting, Downcasting을 이용한 문제점 보안) 일반 클래스 클래스입니다. class Student{ Object name; void set(Object t){ this.name = t ; } Object get() { return name; } } 일반 클래스에서 제네릭을 이용한 클래스입니다. class Student{ T..
instanceof 란? 객체의 타입을 알아내는 키워드 입니다. A instanceof B : A객체가 B 클래스의 객체가 맞으면 true를 반환하고, 틀리면 false를 반환한다. instanceof 키워드에 대한 기본적인 이론을 마치고 실습을 통해 공부하겠습니다. 기본적인 instanceof 키워드에 대한 이론과 사용 방법을 담은 메인(main) 클래스 public class ExampleInstanceof { public static void main(String[] args) { A a1 = new B(); A a2 = new C(); B b1 = new B(); // 객체가 무엇으로 이루어져 있는지 판단하는 instanceof 연산자 // A instanceof B => A 객체가 B 클래스로 ..
예외처리에 대한 기본적인 공부를 마무리하고 (링크를 통해 예외처리에 대한 기본적인 공부를 하시면 됩니다.) 사용자 정의 예외처리에 대해 실습으로 공부하겠습니다. 사용자 정의 예외를 사용하기 위한 ExceptionTest 클래스 public class ExceptionTest { // Checked Exception : // Exception 클래스 상속받은 예외 public void foo(int n) throws MyException { // foo() 라는 메소드를 호출했을 때 // MyException 예외가 날 수 있으니 처리하라. // 예외가 발생 될 조건 if (n < 0) { // 예외 발생! // 예외 발생 시에 예외 객체를 만들어서 catch문에 던진다. throw new MyExcept..
예외처리(Exception) 이란? 예외가 발생하는지 검사하고 예외가 발생할 경우 프로그램이 비정상 종료가 되는 것을 방지하기 위해 처리하는 것 * 필수는 아니지만 강력하게 권고하는 프로그래밍 스킬입니다. 예외의 종류- 예외의 종류에 따라 처리되지 않아도 되는 예외가 있다. 예외의 종류 설명 컴파일러 체크 Error 자바 가상 기계 안에서 오류가 발생시 생성된다. X RuntimeException 프로그래밍 버그, 논리오류에서 기인한다. X CheckedException Error와 RuntimeException을 제외한 나머지 예외이다.회복 될 수 있는 예외이므로 프로그램은 반드시 처리해야 한다.(처리가 되지 않을 경우 컴파일 오류 발생) O 분류 예외 타입(예외 클래스) 예외 발생 경우 Runtime..
다형성이란? 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있다. Java에서 다형성은 상속과 인터페이스를 통해 이루어지며, 인터페이스가 상속보다 다형성에 더욱 유연함을 제공합니다. 참조변수의 형변환 - 기본형 변수와 같이 참조변수도 형변환이 가능하다.서로 상속관계에 있는 클래스 사이에서만 가능하다. 형변환 생략 여부자손타입 -> 조상타입 (Up-casting) 형 변환 생략 가능 자손타입 원의 넓이를 구해라. System.out.println(s); // 원을 도형으로 부르겠다. 도형을 객체로 불러서 // 객체의 정보를 출력해라. -> 원에 대한 정보를 출력해라. // println(Object x) // DownCa..
자바의 Object 클래스란 ? 자바 API의 모든 클래스와 사용자가 정의한 모든 클래스의 최상위 클래스이다. 즉, 모든 자바 클래스들은 Object 클래스를 상속받는다. ex ) class A extends B A클래스는 B클래스를 상속받았으며, Object 클래스도 묵시적으로 상속받았다고 볼 수 있다. * Object 클래스의 주요메소드 메소드 용도 boolean equals(object obj) 두 개의 객체가 같은지 비교한다. 반환형은 boolean (true, false) String toString() 현재 객체의 문자열을 반환한다. (오버라이딩을 사용하여 현재 객체의 초기화된 멤버변수를 알 수 있다.) Object clone() 객체를 복사한다. Class getClass() 객체의 클래스형..
인터페이스란 ? 완벽한 abstract 클래스라고 표현할 수 있다. 객체와 객체사이의 상호작용을 나타낸다 (약속) (abstract 클래스를 다시 공부하시려면 링크를 이용하세요.) 인터페이스의 특성 인터페이스 1. 구현하기 위해 implement를 사용 2. 오직 추상메소드와 상수로만 이루어져 있다. 3. 인터페이스 안에서 선언되는 메소드는 모두 묵시적으로 public, abstract 인터페이스와 추상클래스 No. 인터페이스 추상클래스 1 클래스가 아니며 interface로 선언 클래스(class)이다. 2 public abstract 추상메소드만 가진다. 일반메소드, 추상메소드를 가질 수 있다. 3 구현을 하며 implements로 서브 클래스를 정의한다. 확장 가능하며 extends로 하위 클래스 ..