본문 바로가기
Efficient Android Threading #7 Executor 프레임워크를 통한 스레드 실행 제어 Efficient Android Threading #7 Executor 프레임워크를 통한 스레드 실행 제어 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.9.1. Executor -Executor 는 interface 로 void execute(Runnable command); 하나의 함수를 갖는다.단순하지만 강력하다. 이는 테스크를 만드는 것과 실행 사이에 분리를 확실하게 해주기 때문에 기본 Thread 인터페이스보다 더 자주 사용된다. -public class SimpleExecutor implements Executor { @Override public void execute(Runnable runnable){ new.. 2018. 3. 23.
[라오스 비엔티안] 길거리 팟타이 맛집과 야시장 [라오스 비엔티안] 길거리 팟타이 맛집과 야시장 한숨자고 나니 저녁이 되었다.이제 야시장을 구경하러 나간다. 우리는 루앙프라방의 야시장을 생각하면서 숙소에서 나왔다. 우리를 처음 맞이해준 것은 바로 다트 던져 풍선터뜨리기.지금 생각해보면 엄마가 하고 싶다고 할 때 왜 말렸을까 싶다.그냥 재미로 한번쯤은 해볼만한데... 아마도 야시장도 빨리 봐야하고, 배도 고파서 그랬겠지..?이유가 있었겠지?? 은근히 하는 사람도 많고 이 풍선 노점이 많았다.그러나 인형을 가져가는 사람은 아주 적었다. ㅋㅋ 요기가 비엔티안의 야시장.루앙프라방처럼 수공예품이나 전통물품, 기념품들을 파는 것이 아니라,태국 스타일의 생필품 스타일의 야시장이다. 사람들은 엄~~~청 많은데, 막상 살 것이나 구경할만한 것은 없다.다 조악하다. 맘.. 2017. 4. 17.
[Effective Java] 인스턴스 제어에는 readResolve 메소드보다 enum 타입을 사용하자. [Effective Java] 인스턴스 제어에는 readResolve 메소드보다 enum 타입을 사용하자. - readResolve 메소드는 readObject 메소드에서 생성한 인스턴스를 다른 인스턴스로 바꾸어준다. 만일 역직렬화되는 객체의 클래스에서 readResolve 메소드를 올바르게 정의하면 그 객체가 역직렬화된 후 그 결과로 새롭게 생성된 객체에 대해 이 메소드가 자동 호출되며, 이 메소드에서 반환하는 객체 참조가 역직렬화로 새롭게 생성된 객체 대신 반환된다. - 싱글톤의 경우 다음과 같은 방법으로 싱글톤을 유지할 수 있다. private Object readResolve(){// Deserialization 으로 생성된 새로운 녀석은 GC 된다.return INSTANCE;} - readRe.. 2017. 3. 27.
[라오스 루앙프라방] 메콩강 일몰 & 가게들 구경 [라오스 루앙프라방] 메콩강 일몰 & 가게들 구경 옌 사바이에서 다시 배를 타고 돌아와 자전거 자물쇠를 풀고 이제 집에 돌아간다. 이렇게 이른 시간에 집으로 돌아가는 이유는 여행이 "나름" 길어지면서 어머니의 체력이 급저하했기 때문이다. 원래는 메콩강 일몰을 볼 수 있는 루앙프라방의 센터에 위치한 "푸시산" 을 올라가려 했으나.체력이 급저하해서 포기! 그래서 오늘은 "마사지" 로 일정을 마무리하기로 한다. 또 한번 라오스의 유럽 느낌인 루앙프라방. 자전거 타는 것도 체력이 달리는 것만 같다. 야시장이 열리기 전의 루앙프라방 메인 거리.지극히 동남아스러운데 은근한 프랑스를 느낄 수 있는 건 왜일까? 집에 돌아가면 마사지를 받을 수 있기 때문이라는 희망 때문일까 앞장서서 잘 달리신다. 이왕 숙소로 돌아가는 .. 2017. 3. 20.
[Effective Java] 스레드 안전을 문서화 하자. [Effective Java] 스레드 안전을 문서화 하자. - 클래스 행동을 문서화하지 않으면, 프로그래머는 가정에 의존해서 그 클래스를 사용해야 한다. 만일 그런 가정들이 잘못되면, 그로 인한 프로그램은 불충분한 동기화나 과도한 동기화를 하게 될 것이다. 어떤 경우든, 심각한 에러가 유발될 수 있다. - 메소드 선언부의 synchronized 변경자는 메소드의 상세 구현 부분이지 외부로 제공되는 API 가 아니다. 즉 Javadoc 에 synchronized 가 공개되지 않는다. synchronized 변경자가 있다는 것이 스레드 안전을 문서화하기에 충분한 것은 아니다. 동시적 사용을 안전하게 하려면, 해당 클래스가 어떤 수준의 스레드 안전을 지원하는지 명확하게 문서화해야 한다. - 다음은 스레드 안전.. 2017. 3. 14.
[Effective Java] checked 예외의 불필요한 사용을 피하자 [Effective Java] checked 예외의 불필요한 사용을 피하자 - checked 예외는 프로그래머가 예외 상황을 처리하지 않을 수 없도록 한다. - checked 예외의 과용은 API 사용자를 불편하게 만든다. - 만일 API 사용자가 해당 예외 사항에 대해 ignore 와 같은 방식 이외에 해결방법이 없다면, unchecked 에러를 사용하는 게 더 적합하다. - checked 예외를 unchecked 예외로 바꾸는 한 가지 방법은, 해당 예외를 발생시키는 메소드를 두 개의 메소드로 쪼개는 것이다. 그 중 첫번째 메소드에서는 예외가 생겼는지를 나타내는 boolean 값을 반환하게 한다. 예를 들면.. try{obj.action(args);} catch( TheCheckedException .. 2017. 2. 23.
[라오스 루앙프라방] 하이라이트!! 꽝시폭포 #1 [라오스 루앙프라방] 하이라이트!! 꽝시폭포 #1 자, 이제 루앙프라방의 하이라이트 중 하나인 꽝시폭포 투어를 떠나보자. 루앙프라방 시내에서 꽝시 폭포까지는 밴을 타고 약 1시간정도 소요된다.약 30km 떨어진 곳이다. 노바투어에 벤이 도착했을 때는 이미 서양 사람들이 가득 차 있었다.우리는 1인당 5만킵으로 밴을 예매했는데,그들이 영어로 떠드는 것을 들어보니 1인당 4만킵으로 예매해서 왔단다... 한국인 여행사를 이용하는 것이 의사소통 측면에서는 편하지만,가격 면에서는 항상 최저가는 아니란 점은 명심하자. 어머니는 소고기 랍을 맛있게 드셨던지 차를 타자마자 꾸벅꾸벅 조셨다. ㅋㅋ나도 꾸벅꾸벅 졸면서 약 1시간정도 이동하니 꽝시폭포에 도착했다. 밴은 꽝시 폭포의 하이라이트 메인 폭포 바로 앞까지 들어와 .. 2017. 2. 17.
[Effective Java] 문자열 결합의 성능 저하를 주의하자. [Effective Java] 문자열 결합의 성능 저하를 주의하자. - 문자열 결합 연산자(+)는 편리하지만 크기 조정이 안 된다는 단점이 있다. 문자열 결합 연산자를 n개의 문자열에 반복적으로 사용하면 n의 제곱에 비례하는 시간이 소요된다. String 이 불변(immutable)이기 때문이다. - 원하는 성능을 얻으려면 String 대신 StringBuilder 를 사용하자. - StringBuilder 를 결과를 충분히 저장할 만큼의 크기로 만들면 성능에 더 유리하다. 미리 산정된 만큼의 크기로 StringBuilder 를 생성하지 않고, 기본 크기로 생성해도 + 형태보다 여전히 50배 이상 빠르다. - StringBuilder 를 사용하기 싫다면 문자 타입을 저장하는 배열을 사용하거나, 문자열을 .. 2017. 2. 7.
[라오스 방비엥] 블루라군 돌아오는 길, 서정적이군! [라오스 방비엥] 블루라군 돌아오는 길, 서정적이군! 방비엥에서는 블루라군이 유명하기도 하지만,블루라군으로 가는 길 역시 아름답기로 유명하다. 우리도 오토바이를 타고 블루라군을 향해 가면서,"우와~ 경치 좋다~" 라면서 이동했지만,너무 늦게 가면 물이 차가워 놀지 못하거나, 빨리 어두워져 폐장할까 무서워가는 길에는 우와우와! 감탄만 하고 돌아오는 길에 사진을 찍기로 했다. 그래서 돌악다는 길에 사진을 찍기 시작한다. 날이 저물어가는 그 분위기.뜨문뜨문 있는 멋진 뿔을 가진 소들.그리고 고인 물이 어두운지는 하늘을 반사시키면서,오묘한 이국적 풍경을 만든다. 뿔이 멋지게 생긴 황소가 열심히 잔디깍기를 하고 있다. 물은 "반사" 는 자연의 화가이다.,그냥 거울처럼 똑같이 반사하는 것이 아닌, 뿌옇게 번지는 효.. 2017. 1. 17.
반응형