- import java.util.LinkedList;
- public class AppThreadPool {
- private int poolSize;
- private LinkedList queue;
- public AppThreadPool(int poolSize) {
- this.poolSize = poolSize;
- queue = new LinkedList();
- FileWorker[] Pool = new FileWorker[poolSize];
- for (int i = 0; i < Pool.length; i++) {
- Pool[i] = new FileWorker();
- Pool[i].start();
- }
- }
- public void addTask(Runnable r) {
- synchronized (queue) {
- queue.addLast(r);
- queue.notify();
- }
- }
- public int getSize() {
- return poolSize;
- }
- private class FileWorker extends Thread {
- public void run() {
- Runnable task;
- while (true) {
- synchronized (queue) {
- while (queue.isEmpty()) {
- try {
- queue.wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- task = (Runnable) queue.removeFirst();
- }
- task.run();
- }
- }
- }
- }