2323package com .twitter .clientlib .stream ;
2424
2525
26- import java .io .BufferedReader ;
27- import java .io .InputStream ;
28- import java .io .InputStreamReader ;
2926import java .util .ArrayList ;
3027import java .util .List ;
3128import java .util .concurrent .BlockingQueue ;
@@ -50,8 +47,6 @@ public class TweetsStreamExecutor {
5047 private long startTime ;
5148 private int tweetsCount = 0 ;
5249 private final int tweetsLimit = 250000 ;
53- private final int deserializationThreads = 1 ; //TODO parametrize this
54-
5550 private ExecutorService rawTweetsQueuerService ;
5651 private ExecutorService deserializationService ;
5752 private ExecutorService listenersService ;
@@ -83,45 +78,44 @@ public void start() {
8378 rawTweetsQueuerService = Executors .newSingleThreadExecutor ();
8479 rawTweetsQueuerService .submit (new RawTweetsQueuer ());
8580
86- deserializationService = Executors .newFixedThreadPool (deserializationThreads );
87- for (int i = 0 ; i < deserializationThreads ; i ++) {
88- deserializationService .submit (new DeserializeTweetsTask ());
89- }
81+ deserializationService = Executors .newSingleThreadExecutor ();
82+ deserializationService .submit (new DeserializeTweetsTask ());
9083
9184 listenersService = Executors .newSingleThreadExecutor ();
9285 listenersService .submit (new TweetsListenersTask ());
9386 }
9487
9588 public synchronized void shutdown () {
9689 isRunning = false ;
97- rawTweetsQueuerService .shutdown ();
98- deserializationService .shutdown ();
99- listenersService .shutdown ();
90+ shutDownServices ();
10091 try {
101- if (!rawTweetsQueuerService .awaitTermination (3 , TimeUnit .SECONDS )) {
102- rawTweetsQueuerService .shutdownNow ();
103- if (!rawTweetsQueuerService .awaitTermination (3 , TimeUnit .SECONDS ))
104- System .err .println ("Pool did not terminate" );
105- }
106- if (!deserializationService .awaitTermination (3 , TimeUnit .SECONDS )) {
107- deserializationService .shutdownNow ();
108- if (!deserializationService .awaitTermination (3 , TimeUnit .SECONDS ))
109- System .err .println ("Pool did not terminate" );
110- }
111- if (!listenersService .awaitTermination (3 , TimeUnit .SECONDS )) {
112- listenersService .shutdownNow ();
113- if (!listenersService .awaitTermination (3 , TimeUnit .SECONDS ))
114- System .err .println ("Pool did not terminate" );
115- }
92+ terminateServices ();
11693 } catch (InterruptedException ie ) {
117- rawTweetsQueuerService .shutdown ();
118- deserializationService .shutdown ();
119- listenersService .shutdown ();
94+ shutDownServices ();
12095 Thread .currentThread ().interrupt ();
12196 }
12297 System .out .println ("TweetsStreamListenersExecutor is shutting down." );
12398 }
12499
100+ private void shutDownServices () {
101+ rawTweetsQueuerService .shutdown ();
102+ deserializationService .shutdown ();
103+ listenersService .shutdown ();
104+ }
105+
106+ private void terminateServices () throws InterruptedException {
107+ terminateService (rawTweetsQueuerService );
108+ terminateService (deserializationService );
109+ terminateService (listenersService );
110+ }
111+ private void terminateService (ExecutorService executorService ) throws InterruptedException {
112+ if (!executorService .awaitTermination (3 , TimeUnit .SECONDS )) {
113+ executorService .shutdownNow ();
114+ if (!executorService .awaitTermination (3 , TimeUnit .SECONDS ))
115+ System .err .println ("Pool did not terminate" );
116+ }
117+ }
118+
125119 private class RawTweetsQueuer implements Runnable {
126120
127121 @ Override
@@ -130,7 +124,6 @@ public void run() {
130124 }
131125
132126 public void queueTweets () {
133-
134127 String line = null ;
135128 try {
136129 while (isRunning ) {
0 commit comments