1
0
mirror of https://github.com/moparisthebest/k-9 synced 2025-02-11 20:50:19 -05:00

Use a thread pool to optimize resource usage instead of always firing up new threads (less garbage collection).

Note: this is not a complete revert of r2153 since the pool is now automatically expanded as needed (different implementation).
This commit is contained in:
Fiouz 2010-10-02 07:45:11 +00:00
parent 71dbdf3417
commit f6064ff19f

View File

@ -18,6 +18,8 @@ import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -140,6 +142,8 @@ public class MessagingController implements Runnable
ConcurrentHashMap<Account, Pusher> pushers = new ConcurrentHashMap<Account, Pusher>(); ConcurrentHashMap<Account, Pusher> pushers = new ConcurrentHashMap<Account, Pusher>();
private final ExecutorService threadPool = Executors.newCachedThreadPool();
public enum SORT_TYPE public enum SORT_TYPE
{ {
SORT_DATE(R.string.sort_earliest_first, R.string.sort_latest_first, false), SORT_DATE(R.string.sort_earliest_first, R.string.sort_latest_first, false),
@ -401,7 +405,7 @@ public class MessagingController implements Runnable
*/ */
public void listFolders(final Account account, final boolean refreshRemote, final MessagingListener listener) public void listFolders(final Account account, final boolean refreshRemote, final MessagingListener listener)
{ {
new Thread(new Runnable() threadPool.execute(new Runnable()
{ {
public void run() public void run()
{ {
@ -457,7 +461,7 @@ public class MessagingController implements Runnable
l.listFoldersFinished(account); l.listFoldersFinished(account);
} }
} }
}).start(); });
} }
private void doRefreshRemote(final Account account, MessagingListener listener) private void doRefreshRemote(final Account account, MessagingListener listener)
@ -557,13 +561,13 @@ public class MessagingController implements Runnable
*/ */
public void listLocalMessages(final Account account, final String folder, final MessagingListener listener) public void listLocalMessages(final Account account, final String folder, final MessagingListener listener)
{ {
new Thread(new Runnable() threadPool.execute(new Runnable()
{ {
public void run() public void run()
{ {
listLocalMessagesSynchronous(account, folder, listener); listLocalMessagesSynchronous(account, folder, listener);
} }
}).start(); });
} }
@ -699,7 +703,7 @@ public class MessagingController implements Runnable
+ ")"); + ")");
} }
new Thread(new Runnable() threadPool.execute(new Runnable()
{ {
public void run() public void run()
{ {
@ -891,7 +895,7 @@ public class MessagingController implements Runnable
listener.searchStats(stats); listener.searchStats(stats);
} }
} }
}).start(); });
} }
public void loadMoreMessages(Account account, String folder, MessagingListener listener) public void loadMoreMessages(Account account, String folder, MessagingListener listener)
@ -3101,7 +3105,7 @@ public class MessagingController implements Runnable
{ {
l.loadMessageForViewStarted(account, folder, uid); l.loadMessageForViewStarted(account, folder, uid);
} }
new Thread(new Runnable() threadPool.execute(new Runnable()
{ {
public void run() public void run()
{ {
@ -3159,7 +3163,7 @@ public class MessagingController implements Runnable
} }
} }
}).start(); });
} }
/** /**