분류 전체보기

리소스 자동 해제 예외 처리 finally{} 블록은 '항상 실행해야 하는 기능이 있을 때 사용하는 블록' 이다 finally{} 블록의 가장 대표적인 기능은 리소스를 해제하는 것이다. (자원반납) 예를들어 수정하기 위해 열어둔 파일이 있다면 이 파일을 닫아야 다른 프로그램이 이 파일을 사용할 수 있다. 메모리에 엄청난 크기의 객체를 만들어 놓고 사용했을 때도 사용이 완료되면 메모리 공간을 확보하기 위해 리소스를 해제해야 한다. 자바에서 리소스해제가 꼭 필요한 대표적인 예로 자바 입출력 리소스를 들 수 있다. 다음 예제를 살펴보자 InputStreamReader is = null; try { is = new InputStreamReader(System.in); System.out.println(is.re..
예외와 에러의 차이점 예외: 개발자가 처리할 수 있는 오류 에러: 개발자가 처리할 수 없는 오류 자바에서 예외의 최상위 클래스는 Excetpion클래스, 에러의 최상위 클래스는 Error클래스다. 이 2개의 클래스는 모두 Throwable클래스를 상속하고 있다. 따라서 에러와 예외 모두 Throwable클래스의 모든 기능을 포함한다. 예외 클래스의 상속 구조 Throwable클래스를 상속받은 Exception클래스는 다시 일반 예외 클래스(Checked Exception)와 실행 예외 클래스(Unchecked(runtime) exception)로 나뉜다. Exception 클래스에게서 직접 상속 받은 예외 클래스들이 처리하는 일반 예외는 컴파일 전에 예외 발생 문법을 검사하며, 예외 처리를 하지 않으면 ..
이너 인터페이스 이너 클래스와 마찬가지로 인터페이스를 클래스 내부에 정의하는 것은 해당 클래스에 의존적인 기능을 수행할 때다. 이너 인터페이스는 사용자 인터페이스의 이벤트 처리에 가장 많이 사용된다. 이너 인터페이스의 정의와 특징 이너 인터페이스의 특징 중 하나는 정적 이너 인터페이스만 존재할 수 있다는 것이다. 만약 이너 인터페이스 앞에 static 제어자를 생략하면 컴파일러가 자동으로 추가해 준다. class A{ static interface B{ void bcd(); } } 이너 인터페이스도 인터페이스므로 자체적으로 객체를 생성할 수 없다. 객체를 생성하기 위해서는 해당 인터페이스를 상속한 자식 클래스를 생성한 후 생성자를 이용해 객체를 생성하거나 익명 이너 클래스를 활용해 객체를 생성해야 한다...
인터페이스 타입의 입력 매개변수로 익명 이너 클래스를 이용해 생성한 객체를 전달하는 방법을 알아볼 것이다. 인터페이스 A에는 추상메서드 abc(), 클래스 C에는 인터페이스 A 타입의 객체를 입력매개변수로 포함하고 있는 메서드 cde(A a)가 있다. interface A { public abstract void abc(); } class C { void cde(A a) { a.abc(); } } 클래스 C의 객체를 생성한 후 cde(A a)메서드를 호출하기 위해서는 입력 매개변수로 사용될 인터페이스 A타입의 객체를 생성해야한다. 그런데 A는 인터페이스 이므로 객체를 직접 생성할 수 없어 인터페이스 A를 구현(implements)한 자식 클래스의 객체가 전달되어야 한다. 인터페이스 A의 객체를 생성하고,..
익명클래스 익명 클래스란 이름이 없는 클래스 이다. 익명 클래스를 사용하는 이유는 일시적으로 한번만 쓰고 버려지는 객체에 사용되며 물론 재사용 되지 않는다. 확장성을 고려하여 익명클래스를 쓰지 않는 경우가 있지만 확장성 있는 클래스를 사용하는 것 보다 익명클래스를 사용하여 추후에 유지보수시 이점이 있을 때 사용한다. 오로지 단 하나의 클래스를 상속받거나 단 한의 인터페이스만을 구현할 수 있다. 익명클래스를 사용하지 않은 예제 interface Age { int age = 29; void getAge(); } class MyClass implements Age { @Override public void getAge() { System.out.print(age); } } class AnonymousTest ..
· CS/OS
Deadlock 발생 필요 조건은 다음 4가지를 전부 만족시켜야한다. Exclusive use of resources Non preemptible resources Hold and wait (Partial allocation) Circular wait 이 중에서 하나라도 만족시키지 않으면 Deadlock이 발생하지 않는다. Deadlock을 해결하는 다음 3가지 방법이 있다. Deadlock 해결 방법 Deadlock prevention methods (교착상태 예방) Deadlock avoidance method (교착상태 회피) Deadlock detection and deadlock recovery methods (교착상태 탐지 및 복구) Deadlock Prevention 4 개의 deadlock..
Interface (인터페이스) 인터페이스는 내부의 모든 필드가 public static final 로 정의됨 인터페이스의 static, default메서드를 제외한 모든 메서드는 public abstract 로 정의됨 인터페이스는 다중상속을 지원한다. 인터페이스는 동일한 목적하에 동일한 기능을 수행하게끔 강제하는것이 역할이자 개념 인터페이스는 "Inteface" 키워드를 통해 선언할 수 있으며, "implements" 키워드를 통해 일반 클래스에서 인터페이스를 구현할 수 있다. public interface Drawable{ void draw(); } Abstatct Class (추상 클래스) 구제적이지 않은 클래스이다. (메서드의 본체가 완성되지 않은 미완성 메서드) 클래스들의 공통되는 메소드를 정의..
자바에서 캐스팅(형변환)은 타입을 변환하는 것을 뜻한다. 기본 자료형에서도 등호를 중심으로 항상 왼쪽과 오른쪽 자료형이 일치해야 하는데 만일 자료형이 다를 경우에 컴파일러가 자동으로 타입을 변환해주던가 사용자가 직접 변환해줘야 한다. 이 포스트에서는 상속 관계에 있는 부모, 자식 클래스간에 형변환인 업캐스팅, 다운캐스팅에 대한 내용과 왜 사용하는지 작성하였다. 업 캐스팅 자식 클래스가 부모 클래스 타입으로 형변환 되는 것 Java에서 자식 클래스는 부모 클래스의 모든 특성을 상속받는다. class Person{ String name; public Person(String name) { this.name = name; } } class Student extends Person{ String age; pub..
· CS/OS
각 방향의 자동차들은 서로 다른 곳으로 이동하고 싶지만 꽉 막혀 있기에 이동하지 못한다. 프로세스도 마찬가지로 자신들이 원하는 자원을 가져가고싶은데 그러지 못하는 상태가 된다. 이를 Deadlock (교착상태)이(가) 된다. Deadlock의 개념 Blocked state 프로세스가 특정 이벤트를 기다리는 상태 Asleep state 프로세스가 필요한 자원을 기다리는 상태 Deadlock state 프로세스가 발생 가능성이 없는 이벤트를 기다리는 경우 => 프로세스가 deadlock 상태에 있음 (원하는 자원을 받지 못하는데 계속 기다리기 때문) 시스템 내에 deadlock 에 빠진 프로세스가 있는 경우 => 시스템이 deadlock 상태에 있음 앞서 프로세스 스케줄링 알고리즘(5단원)에서 배웠듯이 de..
· CS/OS
어떻게 하면 상호배제가 잘 작동하는 알고리즘을 만들 수 있을까? Mutual Exclusion Solutions 더보기 SW solutions Dekker’s algorithm (Peterson’s algorithm) Dijkstra’s algorithm , Knuth’s algorithm, Eisenberg and McGuire’s algorithm, Lamport’s algorithm HW solution TestAndSet (TAS) instruction OS supported SW solution Spinlock Semaphore Eventcount /sequencer Language Level solution Monitor 다양하게 적용가능하다 그러나 복잡하다. 복잡하기도 하고 에러의 발생확률이..
White Asher
'분류 전체보기' 카테고리의 글 목록 (13 Page)