내가 뭘 하려는지 생각해 보자.
나는 많은 통계를 기록하는 프로그램을 가지고있다. 그들은 한 번에 하나의 일이로를 기록하고, 예를 들어, ArrayList에로두고 :
내가 이러한 통계를 기록하고 있지 않다,이 예입니다 유의하시기 바랍니다, 난 그냥 조금처리하기 전에 일정량의 대기열을 만들어 보자.
User clicks -> Add user_click to array
을 단순화하고 있습니다 User clicks -> Add user_click to array
Key press -> Add key_press to array
(클릭, 키 누름 등)이이 경우> 150 이하가 일어나는 ArrayList의 크기를 확인 :
새로운 스레드는 그 스레드가 ArrayList에 복사본을 부여
를 생성
새 스레드가 유사한 항목을 결합하므로 user_click이 수량 1의 항목 2 개 대신 각각 1 개가됩니다
스레드가 데이터를 MySQL 데이터베이스
이 방법이 더 효과적이지만, 더 나은 접근 방법을 찾고 싶습니다. 쓰래드 풀과 처리의 문제는 문자 그대로 수천 개의 MySQL 질의가 처음에는 결합되지 않는다는 것입니다.
더 좋은 방법이 있습니까? 내 방법 괜찮아?
염두에 두어야 할 다른 점은 events
이 실행되고 기록되는 스레드가 느려질 수 없으므로 주 스레드의 항목을 결합하고 싶지 않은 스레드입니다.
위대한 코드 예제가있는 경우이를 수행하는 좋은 방법이 아니라면 멋진 코드 일 것입니다. 관심있는 사람들을위한
는,이 프로젝트가 GitHub의에서 호스팅되는, 메인 스레드가 here이며, 큐 프로세서는 here하고 불쌍한 내 이름 지정 규칙 및 일반 코드 청결, 난 여전히 해요 (항상) 학습을 용서하십시오!
'Collection'이 특정 크기에 도달했을 때 Observer 패턴을 사용하여 알려야합니다. –
ArrayList 대신 해시 맵에서 이벤트를 통합 할 수 있습니다. – SpiderPig