본문 바로가기
[Effective Java] 스레드 스케쥴러에 의존하지 말자 [Effective Java] 스레드 스케쥴러에 의존하지 말자 - 많은 스레드가 runnable 상태일 때는 어떤 스레드를 실행시킬 것인지, 그리고 얼마 동안 실행시킬 것인지를 스레드 스케쥴러가 결정한다. 운영체제에서는 공정하게 그런 결정을 내리려고 하겠지만, 그 정책은 서로 다를 수 있다. 따라서 잘 작성한 프로그램은 그런 정책의 상세한 내용에 매달려서는 안 된다. 정확성이나 성능을 스레드 스케줄러에 의존하는 프로그램이라면 그 어떤 것도 이식성이 없어질 가능성이 크다. - 강력하고, 응답성이 좋고, 이식성이 있는 프로그램을 작성하는 가장 좋은 방법은, runnable 상태의 평균 스레드 개수가 프로세서의 개수보다 그리 크지 않게 하는 것이다. 이렇게 하면 스레드 스케줄러는 선택의 여지 없이 runnab.. 2017. 3. 17.
[Effective Java] 스레드 그룹보다는 실행자와 작업을 사용하자. [Effective Java] 스레드 그룹보다는 실행자와 작업을 사용하자. - 자바 1.5 배포판 이후에 java.util.concurrent 패키지가 추가되었다. 여기에는 실행자 프레임워크(Executor Framework) 가 포함되어 있다. 이 녀석을 사용하면 Work queue 를 쉽게 관리할 수 있다. ExecutorService executor = Executors.newSingleThreadExecutor();executor.execute(runnable);executor.shutdown(); // 추가된 task 들의 실행은 보장한다. shutdownNow() 도 있다. 위와 같은 간단한 코드로 쉽게 queue 를 만들어 실행시킬 수 있고, shutdown 시킬 수 있다. - Executo.. 2017. 3. 10.
[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.
[Effective Java] static 맴버 클래스를 많이 사용하자. [Effective Java] static 맴버 클래스를 많이 사용하자. - 중첩 클래스(nested class) 혹은 내부 클래스(inner class)는 외곽 클래스(enclosing class)를 지원하는 목적으로만 존재해야 한다. 만일 어떤 중첩 클래스가 일부 다른 분야나 클래스에서도 유용하게 사용된다면 그 클래스는 독립적인 최상위 클래스가 되어야 한다. - 중첩 클래스는 다음 4가지 종류가 있다. static 맴버 클래스 static 이 아닌 맴버 클래스 익명 ( anonymous ) 클래스 지역 ( local ) 클래스 - static 맴버 클래스는 가장 간단한 종류의 중첩 클래스로, 어떤 클래스의 내부에 선언되어 있으며, 그 외곽 클래스의 모든 static 맴버들( private 으로 선언된.. 2016. 11. 17.
Android Transition Animation (TransitionManager, Transition, Scene) Tutorial Android Transition Animation (TransitionManager, Transition, Scene) Tutorial 기본 참조 : http://blog.stylingandroid.com/archives/2143 Layout 의 변화에 대한 animation 을 지원한다.Layout 에 add, remove, move, resize, show, hide 등에 대한 기본 animation 을 지원한다. private ViewGroup mLayout1; @Overridepublic View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.in.. 2014. 4. 8.
[Java] Thread 의 상태에 대한 이야기 자바, Thread 의 상태에 대한 이야기 Thread 는 진행상태에 따라 상태값을 갖는다. 상태의 종류는 Thread.State 에 정의되어 있는데,BLOCKED, NEW, RUNNABLE, TERMINATED, TIMED_WAITING, WAITING 의 형태가 있다. thread.getState() 로 상태정보를 가져올 수 있다. Thread thread = new Thread(); 이 상태는 NEW thread.start(); 이 상태는 RUNNABLE thread scheduler 에 의해 실행이 시작되면 상태는 Running 상태 ( 상수로 구분되어 정의되어 있지는 않다. ) thread 안에서 wait( 1000 ); 이 상태는 TIMED_WAITING wait(); 이 상태는 WAITING.. 2013. 8. 19.
반응형