close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

private GeneralThreadPool() {

  if (Config.THREAD_P_TYPE_GENERAL == 1) {

   _executor = Executors

     .newFixedThreadPool(Config.THREAD_P_SIZE_GENERAL);

  } else if (Config.THREAD_P_TYPE_GENERAL == 2) {

   _executor = Executors.newCachedThreadPool();

  } else {

   _executor = null;

  }

  int i = 2 + Runtime.getRuntime().availableProcessors() * 4;

  final int instantPoolSize = Math.max(1, i / 3);

  _scheduler = Executors

    .newScheduledThreadPool(SCHEDULED_CORE_POOL_SIZE,

      new PriorityThreadFactory("GerenalSTPool",

        Thread.NORM_PRIORITY));

  _pcScheduler = Executors.newScheduledThreadPool(_pcSchedulerPoolSize,

    new PriorityThreadFactory("PcMonitorSTPool",

      Thread.NORM_PRIORITY));

 

}

 

현재 에바팩기준으로 다른누군가가 따로수정하지않았다면 우리 제너럴쓰레드풀 java의 소스는 이런상태입니다.

 

GeneralThreadPoolType = 2                        // Config.THREAD_P_TYPE_GENERAL 입니다.

GeneralThreadPoolSize = 0                         // Config.THREAD_P_SIZE_GENERAL  입니다.

 

그리고 우리 config폴더의 지정되있는 내용이죠

 

현재우리는 기본적으로 2번타입의 스레드풀을 사용합니다. 이 2번타입은 위에빨간색으로체크되있는부분이죠 

 

실질적으로 실행되는건 _executor = Executors.newCachedThreadPool(); 입니다.

 

newCachedThreadPool 의 경우에는 쓰레드를 저장하고 있다가 들어오는 작업 요청에 따라 유연하게

쓰레드를 종료시키거나 생성 시킬수 있다.

노는 쓰레드가 많으면 알아서 판단하여 쓰레드를 종료하거나 반대의 경우 쓰레드를 생성하여 유연하게 작업을 수행한다.

가용한 프로세스보다 더 많은 양의 작업을 처리해야될 경우가 있을 경우 사용하지 않기를 권한다.

 

[출처] Executors|작성자 lbiryu

 

이렇게 말하고있습니다. 

즉 알아서 쓰레드를 관리해주는거죠 단점은 서버컴에서 사용하는 허용쓰레드양보다 더많은 작업을 처리해야될경우는

사용하지않기를 권한다는거죠 ㅎ

가끔 cmd창보다보면 Thread 에러나실때있습니다. Thread-1-2 막이런식으로나는거요 ㅎ

그걸 가끔 스레드가 부족해서나는 에러라고 착각하시는분이계셔서 말씀드리지만

에바팩기준으로 스레드부족현상이날만한 구조는 거의없습니다 통합이 워낙 에바팀에서 잘해놔서요 ㅎ

예전 엠렉 피렉시절이나 그랬지 요즘은 스레드부족으로 에러날일은없구요 그런에러나는건 안에 null포인트에러가나거나

ArrayIndexOut 에러나는경우가많으니 스레드부족걱정은 하지마시길 ㅎ

추가내용

스레드풀의 api 설명

풀 내부의 스레드를 사용해 작업을 실행하는 방법을 사용하면, 작업별로 매번 스레드를 생성해 처리하는 방법보다는 굉장히 많은 장점이 있다. 매번 스레드를 생성하는 대신 이전에 사용했던 스레드를 재사용하기 때문에 스레드를 계속해서 생성할 필요가 없고, 따라서 여러개의 요청을 처리하는데 필요한 시스템 자원이 줄어드는 효과가 있다. 더군다나 클라이언트가 요청을 보냈을때 해당 요청을 처리할 스레드가 이미 만들어진 상태로 대기 하고 있기 때문에 작업을 실행하는 데 딜레이가 발생하지 않아 전체적인 반응 속도도 향상된다. 

 

newFixedThreadPool : 처리할 작업이 등록되면 그에 따라 실제 작업할 스레드를 하나씩 생성한다. 생성 할 수 있는 스레드의 최대 개수는 제한되어 있으며 제한된 개수까지 스레드를 생성하고 나면 더 이상 생성하지 않고 스레드 수를 유지한다.

(만약 스레드가 작업하는 도중에 예상치 못한 예외가 발생해서 스레드가 종료되거나 하면 하나씩 더 생성하기도 한다.)

 

newCachedThreadPool : 캐시 스레드 풀은 현재 풀에 갖고 있는 스레드의 수가 처리 할 작업의 수보다 많아서 쉬는 스레드가 많이 발생할 때 쉬는 스레드를 종료시켜 훨씬 유연하게 대응할 수 있으며, 처리할 작업의 수가 많아지면 필요할 만큼 스레드를 새로 생성한다. 반면 스레드의 수에는 제한을 두지 않는다.

 

newSingleThreadExecutor : 단일 스레드로 동작하는 Executor로서 작업을 처리하는 스레드가 단 하나뿐이다. 만약 작업 중에 Exception이 발생해 비정상적으로 종료되면서 새로운 스레드를 하나 생성해 나머지 작업을 실행한다. 등록된 작업은 설정된 큐에서 지정하는 순서에 따라 반듯이 순차적으로 처리된다.

 

newScheduledThreadPool : 일정 시간 이후에 실행되거나 주기적으로 작업을 실행할 수 있으며, 스레드의 수가 고정되어 있는 형태의 Executor.Timer 클래스의 기능과 유사하다.

[출처] [에바팩강좌] ThreadPool System에 대해서 알아보자 (비공개 카페)

번호 제목 글쓴이 날짜 조회 수
공지 소스자료는 직접 올려주세요 게임존 2017.06.06 550
359 [에바] 3.80 옵코드 [1] 준희미니 2016.06.29 569
358 캐릭명 "메티스" 인 운영자캐릭 접속시 항상 메티스 변신 되게 하기 준희미니 2016.06.29 192
357 3.80 게렝 스킬부분 입니다 준희미니 2016.06.29 40
356 스핵 5회이상 감지시 좀비로 변신되게~ 준희미니 2016.06.29 65
355 서버 게시판 // 유저 게시판 나눠봅시다~! 준희미니 2016.06.29 82
354 운영자 명령어중 나비켓로드 개별 뭉치도록.(ex .리로드 아이템/.리로드 드랍)이런식 준희미니 2016.06.29 111
353 좌표버X(민쿡님 자료) 막는법이래용 준희미니 2016.06.29 73
352 오만의탑 이동 부적 Safe Zone 에서만 사용할수 있게~ 준희미니 2016.06.29 45
351 몬스터 피틱 and 엠틱 간단하게 쓰레드 최소화? 준희미니 2016.06.29 87
350 아이템 드랍 필드별제한 준희미니 2016.06.29 73
349 투명핵 관련으로.... 준희미니 2016.06.29 75
348 데미지핵 관련... 준희미니 2016.06.29 197
347 얼던 퀘 버그,얼녀 이어링 문제등등 코드 보시고 지적좀요 준희미니 2016.06.29 29
346 쑨님 보세요..[기르관련](재맘대로 해봤어요) 준희미니 2016.06.29 35
345 변신이벤트 외부화로 해봅시다~(2.7 Rev1484용) 준희미니 2016.06.29 118
344 데스나이트 포우? 펌 준희미니 2016.06.29 59
343 스냅퍼 용사/지혜 반지 준희미니 2016.06.29 70
342 투석기입니다용 준희미니 2016.06.29 28
341 혈맹버프 아이콘 패킷부분임 준희미니 2016.06.29 61
340 변신시 Alt+1~4주사위 나오도록 준희미니 2016.06.29 41
339 공성소스 정리 (수정 준희미니 2016.06.29 180
» [에바팩강좌] ThreadPool System에 대해서 알아보자 준희미니 2016.06.29 153
337 간단한 주식시스템(테스트 X 준희미니 2016.06.29 69
336 성장의 마법사^에킨스 준희미니 2016.06.29 41
335 공성소스 최종수정판 테스트완료 준희미니 2016.06.29 143
334 에어리어 오브 사일런스 준희미니 2016.06.29 47
333 특정 지역 어택 못하게 준희미니 2016.06.29 54
332 요정 이레이즈 매직 소스 입니다 준희미니 2016.06.29 63
331 바포메트 지팡이 이럽쏴도 안튕기게 준희미니 2016.06.29 47
330 주유팩수정팩 공성시낑김 준희미니 2016.06.29 33
329 주유팩 창고 리셋 되는문제해결 준희미니 2016.06.29 26
328 서먼 공속 막는 야매 준희미니 2016.06.29 37
327 포그&어바%앱솔등 피빠질때 준희미니 2016.06.29 41
326 점팩버젼 인벤제작소스 준희미니 2016.06.29 56
325 한계정당 한번만 아덴주기 준희미니 2016.06.29 128
324 점팩용소스 피제한 준희미니 2016.06.29 28
323 요즘에 될지모르겟지만... 해보세요 ㅎ 준희미니 2016.06.29 122
322 인첸트 실패로 증발 할 경우 무게게이지 업데이트 하기 준희미니 2016.06.29 31
321 새로운 이동주문서 만들어보자 준희미니 2016.06.29 165
320 운영자 명령어 전체마법 [1] 준희미니 2016.06.29 158
319 텔레포트 요금 청구하기 준희미니 2016.06.29 56
318 배율 조절 GM 명령어로 바로 적용시키기 준희미니 2016.06.29 151
317 파란물약 구현하기 준희미니 2016.06.29 49
316 발라가 유저 엠흡 준희미니 2016.06.29 33
315 빛나는 벨트 제작 준희미니 2016.06.29 85
314 무게게이지 82% 가 되면 마법도 사용되지 않도록 하기 준희미니 2016.06.29 34
313 기사 마법투구 바운스어택 스킬나오게 준희미니 2016.06.29 52
312 선공몹 운영자 무시하기 준희미니 2016.06.29 50
311 군주 스킬 아이콘 만들기 준희미니 2016.06.29 100
310 덱방을 알아보자 준희미니 2016.06.29 45