찾다

 >  Q&A  >  본문

java - ThreadPoolExecutor.execute()方法疑惑

根据类的继承机构,我们知道ThreadPoolExecutorService 继承了AbstractExecutorService类继承了ExecutorService接口继承了Executor接口中的execute()方法,这个方法是被用来专门执行异步任务的,通过传入参数Runnable来执行的。但是我看到ThreadPoolExecutorService.execute(Runnable command)方法中的源码表示不理解,求大牛帮忙看看这个源码,究竟都做了一些什么?

ringa_leeringa_lee2811일 전799

모든 응답(2)나는 대답할 것이다

  • 阿神

    阿神2017-04-18 09:37:56

    1. 현재 실행 중인 corePoolSize(코어 스레드)보다 작은 스레드가 있으면 현재 작업이 첫 번째 위치에 제출됩니다. 그러면 addWorker 메서드가 몇 가지 검사를 수행합니다.

    2. 새 작업이 대기열에 추가되면 다시 확인하여(상태가 변경되거나 스레드 풀이 닫히기 때문에) 롤백해야 하는지 또는 새 스레드 객체를 롤백해야 하는지 결정합니다.
    3. 작업을 대기열에 넣을 수 없으면 새 Thread 개체를 추가하려고 시도하고, 그렇지 않으면 작업이 거부됩니다.
    4. PS: 이 방법과 전체 스레드 풀 지식을 자세히 분석한 아주 좋은 글을 읽은 기억이 나네요. 찾아보실 수 있도록 도와드리겠습니다...

    업데이트: Java 스레드 풀에 대한 심층적인 이해

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 09:37:56

    어서

    회신하다
    0
  • 취소회신하다