본문 바로가기
Efficient Android Threading #5 기본 스레드의 생명주기 관리 Efficient Android Threading #5 기본 스레드의 생명주기 관리 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.7.1. 기본 사항 ** 7.1.1. 생명주기 -스레드는 다음의 생명 주기를 갖는다. 생성 : 스레드를 생성한 스레드와 동일한 우선순위로 할당된다.실행 : start() 가 호출될 때 실행 환경이 설정되고 실행될 준비가 된다. 이후 스케줄러가 이 스레드를 선택하면 run 메서드가 호출된다.차단/대기 : sleep(), yield() 등이 수행되었을 때이다.종료 : run 메서드가 종료된 상태이다. 최종상태에며 Thread 인스턴스나 실행 환경은 재사용 할 수 없다. ** 7.1.2. 인터럽트 -.. 2018. 3. 21.
[Objective-C] Objective-C 프로그램 [Objective-C] Objective-C 프로그램 출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 2. Notice : 정리자(돼지왕 왕돼지)가 remind 하고 싶은 내용이나 모르는 내용 기반으로 정리하는 것이기 때문에 구체적인 내용은 책을 사서 보시기를 권장드립니다. 2.1. 객체와 메시지 * 2.1.1. 메시지 표현식 * 2.1.2. 메시지 셀렉터 -함수명(메서드명)을 메시지 셀렉터(message selector) 또는 셀렉터(selector) 라고도 부른다. -인수가 있는 키워드는 콜론도 셀럭터에 포함되므로 주의즉 copy 와 copy: 는 다른 셀렉터. -메시지 키워드는 변수의 명명규칙에 따라 이름을 지으며, 소문자로 시작하는 것이 관례 -메시지에 인수가 있으면 메.. 2017. 12. 24.
[Objective-C] new 대신 alloc init? [Objective-C] new 대신 alloc init? -objective-c 코드에서 대부분 new 대신 alloc init 을 사용한다.그 이유는? -가장 큰 이유는 new 는 custom initializer 를 사용할 수 없다는 것.alloc init 은 alloc initWithSomething 과 같은 custom initializer 를 사용할 수 있다. -두번째는 new 보다는 alloc init 이 더 직관적으로 다가온다.메모리 할당 & 초기화 라는 구문으로 더 명시적이다. -new 는 alloc init 과 같은 효과이다.기본 초기자를 사용할 때는 new 를 써도 되겠지만, 가독성이나 여러가지 면을 고려했을 때 그렇게 하지 않는 것이 좋다. alloc init, alloc initw.. 2017. 12. 8.
[ios/tutorial] Core Data - Initializing the Core Data Stack [ios/tutorial] Core Data - Initializing the Core Data Stack https://developer.apple.com/library/watchos/documentation/Cocoa/Conceptual/CoreData/InitializingtheCoreDataStack.html#//apple_ref/doc/uid/TP40001075-CH4-SW1 -Core data stack 은 core data 를 초기화하고, external data store 와 app 사이를 중재하는 역할을 하는 framework 집합을 이야기한다. -stack 은 다음 세 가지로 구성된다. NSManagedObjectContextNSPersistentStoreCoordinatorNSMana.. 2017. 11. 3.
[Effective Objective-C] #51 initialize 와 load 메서드는 간결하게 만들라 [Effective Objective-C] #51 initialize 와 load 메서드는 간결하게 만들라 출처 : Effective Objective-C -오브젝티브-C 에서 최상위 클래스인 NSObject 를 상속한 대다수 클래스에는 초기화를 할 수 있는 몇 가지 메서드가 있다.이 메서드들 중 첫 번째는 load 이고 프로토타입은 다음과 같다.+ (void)load -클래스와 카테고리가 런타임에 추가될 때 이 메서드가 딱 한 번 호출된다.이는 클래스 또는 카테고리를 포함하는 라이브러리가 로드될 때, 즉 일반적으로 앱이 처음 실행(launch)될 때 일어난다.하지만 iOS 용 앱일 때만 해당된다.맥 OS X 앱은 동적 로딩(dynamic loading)같은 기능을 자유롭게 쓸 수 있다.그렇기 때문에 앱.. 2017. 10. 19.
[Java Concurrency] 중단 및 종료 #1 [Java Concurrency] 중단 및 종료 #1 - 작업이나 스레드를 안전하고 빠르고 안정적으로 멈추게 하는 것은 어려운 일이다. 더군다나 자바에는 스레드가 작업을 실행하고 있을 때 강제로 멈추도록 하는 방법이 없다. 대신 인터럽트(interrupt)라는 방법을 사용할 수 있게 되어 있는데, 인터럽트는 특정 스레드에게 작업을 멈춰달라고 요청하는 형태이다. 실제 상황에서 특정 스레드나 서비스를 "즉시" 멈춰야 할 경우는 거의 없고, 강제로 종료하면 공유되어 있는 여러 가지 상태가 비정상적인 상태에 놓일 수 있기 때문에 스레드 간의 협력을 통한 접근 방법이 올바르다. 다시 말해, 작업이나 서비스를 실행하는 부분의 코드를 작성할 때 멈춰달라는 요청을 받으면 진행 중이던 작업을 모두 정리한 다음 종료하도록.. 2017. 4. 25.
[Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. [Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. - 객체 직렬화(object serialization) API 는 객체를 바이트 스트림으로 인코딩하고, 인코딩된 바이트 스트림으로부터 객체를 복원(디코딩) 하는 프레임워크이다. - 객체를 바이트 스트림으로 인코딩하는 것을 직렬화(serializing)이라 하고, 그 반대의 절차를 역직렬화(deserializing)이라고 한다. - 객체가 일단 직렬화되면, 인코딩된 객체는 향후에 역직렬화 하기 위해 하나의 실행 중인 VM 에서 다른 VM 으로 전송되거나 디스크에 저장될 수 있다. 직렬화는 원격 통신을 위한 표준 통신 회선 수준의 객체 표현을 제공한다. 직렬화 프록시는 effective java 의 직렬화 주제중 가장 .. 2017. 3. 21.
[Effective Java] 지역 변수의 유효 범위를 최소화 하자. [Effective Java] 지역 변수의 유효 범위를 최소화 하자. - 지역 변수의 유효 범위를 최소화하면, 코드의 가독성과 유지 보수성을 높이고 에러의 가능성이 줄어든다. - C와 같은 종전 프로그래밍 언어들은 지역 변수를 블록의 맨 앞에 선언해야 했으며, 일부 프로그래머들은 습관 때문에 계속 그렇게 한다. 하지만 이것은 버려야 할 습관이다. 자바에서는 명령문만 적법하다면 어디에든 변수를 선언할 수 있기 때문. - 지역 변수의 유효 범위를 최소화하는 가장 강력한 방법은 그 변수가 최초 사용되는 곳에 선언하는 것. 만일 변수를 사용하기 전에 선언하면 혼란만 생긴다. - 지역 변수의 선언과 초기화에 주의하자. 만일 변수를 올바르게 초기화하는데 필요한 정보가 충분하지 않다면, 충분하게 될 때 까지 선언을 .. 2017. 1. 24.
[Effective Java] 가변인자(varargs)를 분별력 있게 사용하자. [Effective Java] 가변인자(varargs)를 분별력 있게 사용하자. - 1.5 이후에 사용 가능한 가변 인자. - 가변 인자만 받는 method 는 문제가 많다. 가장 심각한 것은 클라이언트가 인자를 주지 않고 메소드를 호출하면 Runtime Exception 이 나기 쉽다. ( 파라미터 없이 call 해도 args 값은 null 은 아니다. ) 또한 validity 를 명시적으로 추가해야 하며, 그 코드가 복잡해질 수 있다. - 가변 인자만 받는 method 대신 어떤 의미를 담은 하나의 인자를 더 받아서 처리하는 것이 좋다. - 성능이 중요한 상황에서 가변 인자를 사용하는 것을 주의하자. 가변 인자 메소드는 호출할 때마다 배열 생성과 초기화가 일어난다. 가변 인자의 유연함이 필요하다면 아.. 2017. 1. 17.
반응형