본문 바로가기
[Java Concurrency] 동기화 클래스 구현 14.1. 상태 종속성 관리 - 병렬 객체의 상태 종속적인 메소드는 선행 조건이 만족하지 않았을 때 오류가 발생하는 문제에서 비켜날 수도 있겠지만, 비켜나는 일보다는 선행 조건을 만족할 때까지 대기하는 경우가 많아진다. - 자바에 내장된 조컨 큐 메커니즘(condition queue mechanism)은 실행 중인 스레드가 특정 객체가 원하는 상태에 진입할 때까지 대기할 수 있도록 도와주며, 원하는 상태에 도달해서 스레드가 계속해서 실행할 수 있게 되면 대기 상태에 들어가 있던 스레드를 깨워주는 역할도 담당한다. - 일단 선행 조건을 만족하지 않았다면 락을 다시 풀어줘야 다른 스레드에서 상태 변수를 변경할 수 있다. 만약 락을 풀어주지 않고 계속 잡고 있다면 다른 스레드에서 상태 변수의 값을 변경할 수 .. 2017. 5. 8.
[Java Concurrency] 객체구성 [Java Concurrency] 객체구성 4.1. 스레드 안전한 클래스 설계 - 객체가 갖고 있는 여러 가지 정보를 해당 객체 내부에 숨겨두면 전체 프로그램을 다 뒤져볼 필요 없이 객체 단위로 스레드 안전성이 확보되어 있는지 확인할 수 있다. - 클래스가 스레드 안전성을 확보하도록 설계하고자 할 때에는 다음과 같이 세 가지를 고려해야 한다. 객체의 상태를 보관하는 변수가 어떤 것인가? 객체의 상태를 보관하는 변수가 가질 수 있는 값이 어떤 종류, 어떤 범위에 해당하는가? 객체 내부의 값을 동시에 사용하고자 할 때, 그 과정을 관리할 수 있는 정책 - n 개의 변수를 갖는 객체의 상태는 n개 변수가 가질 수 있는 값의 전체 조합이다. A라는 객체 내부에 다른 객체 B를 가리키는 변수를 사용하고 있다면, .. 2017. 4. 18.
[Effective Java] 가급적 상속(inheritance) 보다는 컴포지션(composition)을 사용하자. 가급적 상속(inheritance) 보다는 컴포지션(composition)을 사용하자. - 상속은 코드를 재사용하는 강력한 방법이다. 그러나 일을 하는데 가장 좋은 도구는 아니다. 잘못 사용하면 부실한 소프트웨어를 초래한다. - 동일 프로그래머가 서브 클래스와 수퍼 클래스의 구현을 관장하는 같은 패키지 내에서 상속을 사용하는 것은 안전하다 상속을 위해 특별히 설계되고 문서화된 클래스를 확장(extends) 하기 위해 상속을 사용하는 것도 안전하다. 그러나 다른 패키지에 걸쳐 일반적인 실체 클래스로부터 상속을 받는 것은 위험하다. - 상속은 캡슐화(encapsulation) 을 위배한다. 올바른 동작을 위해 서브 클래스는 자신의 수퍼 클래스가 구현하는 상세 내역에 의존한다. 수퍼 클래스의 구현 내역은 소프.. 2016. 10. 27.
Class Diagram 에 대한 구체적인 내용들. Class Diagram 에 대한 구체적인 내용들. 참조 : http://www.nextree.co.kr/p6753/ > - UML 에서 제공하는 기본 요소 외 추가적인 확장요소. - 으로 class 이름에 앞서 마킹한다. - 주로 사용되는 stereotype 은 , , , 등이 있다. - interface 의 경우 interface component 가 따로 있어 stereotype 을 사용하지 않아도 되며, abstract 의 경우도 stereotype 보다는 {abstract} 를 class 나 method 뒤에 붙이는 형태를 사용하는 것이 일반적이라고 한다. ( 일반적인지 검증 필요 ) > - abstract 메소드들은 italic 체로 표기하거나, {abstract} 를 class 이름 다음 혹.. 2015. 6. 28.
반응형