Effective Java 제10장 제3절

1989 단어
executor와task가 라인보다 우선
JDK1.5 이후 합병 라인 구조를 도입하면 이종 다중 라인 문제를 더욱 우아하게 실현할 수 있을 뿐만 아니라 라인 탱크, 정시 반복 작업 등 강력한 기능을 제공할 수 있다.
동시 스레드 프레임워크는 기본적으로 다음과 같이 사용됩니다.
//              
ExecutorService executor = Executors.newSingleThreadExecutor();  
//        
executor.execute(runnable);  
//          
executor.shutdown();  

스레드 프레임워크에서 스레드 풀을 만드는 방법은 다음과 같습니다.
//         
ExecutorService executor = Executors.newCachedThreadPool();  
//           
ExecutorService executor = Executors.newFixedThreadPool(int threadNum); 

스레드 프레임워크는 다음과 같은 타이밍 작업을 만듭니다.
//           
ScheduleExecutorService executor = Executors.newSingleThreadScheduleExecutor();  
//           
ScheduleExecutorService executor = Executors.newScheduleThreadPool(int threadNum);  
//                
executor.schedule(Runnable runnable, long delay, TimeUnit unit);  
//        ,      ,              
executor.scheduleAtFixedRate(Runnable runnable, long initialDelay, long period, TimeUnit unit);  
//        ,      ,                
executor.scheduleWithFixedDelay(Runnable runnable, long initialDelay, long delay, TimeUnit unit);  

Timer와 스레드 풀 작업 시간대 비교:
4
  • Timer는 정해진 시간에 임무를 수행하는 것이 더욱 간단하고 Timer는 한 라인으로만 임무를 수행하기 때문에 장기적으로 운행하는 임무에 직면할 때 정해진 시간의 정확성에 영향을 줄 수 있다.Timer의 유일한 스레드가 포착되지 않은 이상을 던지면 Timer는 실행을 중지합니다

  • 4
  • 스레드 탱크의 정시 임무는 여러 개의 스레드를 지원하여 더욱 유연하고 검출되지 않은 이상 임무에서 우아하게 회복할 수 있다

  • 너는 가능한 한 자신의 작업 대기열을 작성하지 말아야 할 뿐만 아니라, 가능한 한 직접 라인을 사용하지 말아야 한다.이제 중요한 추상은 더 이상 Thread가 아니다. 이전에는 업무 단원이자 집행 메커니즘이었다.현재 업무 단원과 집행 메커니즘은 분리되어 있다.현재 관건적인 추상은 작업 단원으로 임무(task)라고 부른다.작업은 두 가지가 있습니다: Runnable과 가까운 Callable (이것은 Runnable와 유사하지만 값을 되돌려줍니다.)임무를 수행하는 일반적인 메커니즘은excutor 서비스입니다.만약 당신이 임무의 측면에서 문제를 보고,exeutor 서비스로 당신을 대신해서 임무를 수행하게 한다면, 적당한 집행 전략을 선택하는 데 매우 유연성을 얻을 수 있을 것이다.본질적으로 Executor Framework가 하는 일은 집행이다. 마치 Collections Framework가 하는 일이 모이는 것과 같다.
    엔지니어링 SingleThreadPool 클래스를 참조하여 학습할 수 있습니다.

    좋은 웹페이지 즐겨찾기