본문 바로가기
Efficient Android Threading #9 서비스 Efficient Android Threading #9 서비스 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.11.1. 비동기 실행을 위해 서비스를 사용해야 하는 이유 -구성요소 생명주기와 스레드 생명주기의 분리호스팅 프로세스의 생명주기 서비스는 메모리 누수에 대한 위험과 너무 빨리 태스크가 종료될 위험을 모두 줄일 수 있다. 11.2. 지역, 원격, 전역 서비스 -전용 원격(다른 프로세스 사용) 서비스는 자신만의 UI 스레드를 가진다.따라서 서비스 UI 스레드는 클라이언트 구성요소의 UI 스레드의 실행을 지연하지 않는다.원격 서비스는 같은 힙 메모리 영역을 공유하지 않는다.따라서 클라이언트는 원격 메서드를 호출하는 데 바.. 2018. 3. 25.
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.
Efficient Android Threading #1 자바의 멀티스레딩,안드로이드 스레드 Efficient Android Threading #1 자바의 멀티스레딩,안드로이드 스레드 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. -동시 실행 설계 자원의 생성과 해체의 빈도를 감소시키기 위해 항상 새로운 스레드를 만드는 것보다 재사용을 권장한다. 필요 이상으로 스레드를 사용하지 않는다. 사용하는 스레드가 많을수록 더 많은 메모리와 프로세서 시간이 소비된다. -App 관점에서 스레드는 UI, 바인더, 백그라운드 thread 로 3가지 유형이 있다. -바인더 스레드는 IPC 에 사용된다.각 프로세스는 Thread pool 을 유지한다.Thread pool 은 종료되거나 재생성되지 않지만, 프로세스 안에서 다른 스레드.. 2018. 3. 17.
[Server구축/Tutorial] Shell 기본 명령어들 [Server구축/Tutorial] Shell 기본 명령어들 -cf) root 일 경우 # 로 prompt 가 나오고, 일반 user 일 경우 $ 로 prompt 가 나온다. -# reboot // 서버 리부팅으로 root 계정만 사용 가능# poweroff // 서버를 끄는 명령어로 가급적 사용하지 않는 것이 좋다. $ passwd // 패스워드 바꾸는 명령어$ whoami // 어떤 계정으로 접속했는지 알 수 있다. -# /etc/init.d/network restart // 네트워크 재시작 명령, 잘못된 option 일 경우 문제가 생길 수 있음을 주의!! -$ ifconfig // 네트워크 관련 정보 출력 -$ cat /etc/*release* // 리눅스 버전 확인 -$ getconf LONG_.. 2017. 5. 27.
[Java Concurrency] 중단 및 종료 #2 [Java Concurrency] 중단 및 종료 #2 7.3. 비정상적인 스레드 종료 상황 처리 - 스레드를 예상치 못하게 종료시키는 가장 큰 원인은 바로 RuntimeException 이다. RuntimeException 은 대부분 프로그램이 잘못 짜여져서 발생하거나 기타 회복 불가능의 문제점을 나타내는 경우가 많기 때문에 try_catch 구문으로 잡지 못하는 경우가 많다. RuntimeException 은 호출 스택을 따라 상위로 전달되기보다는 현재 실행되는 시점에서 콘솔에 스택 호출 추적 내용을 출력하고 해당 스레드를 종료시키도록 되어 있다. - 스레드 풀에서 사용하는 작업용 스레드나 스윙의 이벤트 처리 스레드와 같은 작업 처리용 스레드는 항상 Runnable 등의 인터페이스를 통해 남이 정의하고.. 2017. 4. 26.
[Java Concurrency] 중단 및 종료 #1 [Java Concurrency] 중단 및 종료 #1 - 작업이나 스레드를 안전하고 빠르고 안정적으로 멈추게 하는 것은 어려운 일이다. 더군다나 자바에는 스레드가 작업을 실행하고 있을 때 강제로 멈추도록 하는 방법이 없다. 대신 인터럽트(interrupt)라는 방법을 사용할 수 있게 되어 있는데, 인터럽트는 특정 스레드에게 작업을 멈춰달라고 요청하는 형태이다. 실제 상황에서 특정 스레드나 서비스를 "즉시" 멈춰야 할 경우는 거의 없고, 강제로 종료하면 공유되어 있는 여러 가지 상태가 비정상적인 상태에 놓일 수 있기 때문에 스레드 간의 협력을 통한 접근 방법이 올바르다. 다시 말해, 작업이나 서비스를 실행하는 부분의 코드를 작성할 때 멈춰달라는 요청을 받으면 진행 중이던 작업을 모두 정리한 다음 종료하도록.. 2017. 4. 25.
[Java Concurrency] 작업 실행 [Java Concurrency] 작업 실행 - 앱이 해야 할 일을 "작업"이라는 단위로 분할하면 프로그램의 구조를 간결하게 잡을 수 있고, 트랜잭션의 범위를 지정함으로써 오류에 효과적으로 대응할 수 있고, 작업 실행 부분의 병렬성을 자연스럽게 극대화 할 수 있다. 6.1. 스레드에서 작업 실행 - 프로그램에서 일어나는 일을 작업이라는 단위로 재구성하고자 한다면 가장 먼저 해야 할 일은 작업의 범위를 어디까지로 할 것인지 정하는 일이다. 원론적으로 보자면 작업은 완전히 독립적인 동작을 말한다. 독립성이 갖춰져 있어야 병렬성을 보장할 수 있다. 작업을 스케쥴링하거나 부하 분산(load balancing)을 하고자 할 때 폭넓은 유연성을 얻으려면 각 작업이 앱의 전체적인 업무 내용 가운데 충분히 작은 부분을.. 2017. 4. 24.
[Java] Executor : Java Concurrency API [Java] Executor : Java Concurrency API - Executor Interface 제공된 Runnable 을 실행하는 객체가 구현해야 할 인터페이스. execute( Runnable ) 을 구현해야 한다. public interface Executor {void execute(Runnable command);} - ExecutorService interface Executor 의 라이프 사이클을 관리할 수 있는 기능을 제공한다. 추가로 Runnable 뿐만 아니라 Callable 도 작업할 수 있다. void shutdown() 이미 Executor 에 제공된 작업은 실행되지만, 새로운 작업은 수용하지 않는다. List shutdownNow() 현재 실행중인 모든 작업을 중지시키.. 2017. 3. 8.
처음 야구 구경을 해보았어요 @ 잠실구장 처음 야구 구경을 해보았어요 @ 잠실구장 #본부 워크샵을 야구장으로 간다. 이날의 경기는 SK vs. 두산 # 아주아주 어렸을 때 중학교때쯤 학교에서 티켓을 싸게 판매해서 축구경기 한번 보러 온 것 외에는 경기장을 처음 찾아와봤다. 느낌이 특이하다. # 장소는 잠실경기장 # 맨날 TV 중계만 보다가 실제로 보니, 1루, 2루, 3루, 홈을 이루는 다이아몬드의 크기가 생각보다 작았다. # 그리고 상대적으로 외야라고 불리는 공간이 훨씬 넓었다. # 잠실경기장은 두산의 홈구장. 홈구장이라는 것이 왜 필요할까? 어차피 경기장은 똑같이 생겼을테고, 똑같은 환경일텐데 싶었는데.. 실제 응원이 시작되고 나서는 홈구장의 의미를 알 수 있었다. 우리는 적진 한가운데에 들어온 것이었다. # 잠실 경기장에 응원온 SK 팬들.. 2016. 8. 5.
반응형