java - ThreadPoolExecutor.execute()方法疑惑
ringa_lee
ringa_lee 2017-04-18 09:35:56
0
2
794

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

ringa_lee
ringa_lee

ringa_lee

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

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

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

左手右手慢动作

어서

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿