Multithreading 线程过多错误异常

Multithreading 线程过多错误异常,multithreading,exception,blackberry,Multithreading,Exception,Blackberry,我在制作黑莓应用程序时遇到了一个问题,我打了7次电话,每次都从服务器下载一个音频,效果很好,但当我启动两次应用程序时,出现了一个未捕获的异常,即“太多线程错误异常”,因此,请告诉我如何解决这个问题 如果在重新启动应用程序时发生,则意味着您必须有一些僵尸你确定要加入所有的线程吗?我认为不要启动7个线程,而是使用单个线程。 1.创建TaskWorker类 public class TaskWorker implements Runnable { private boolean quit =

我在制作黑莓应用程序时遇到了一个问题,我打了7次电话,每次都从服务器下载一个音频,效果很好,但当我启动两次应用程序时,出现了一个未捕获的异常,即“太多线程错误异常”,因此,请告诉我如何解决这个问题

如果在重新启动应用程序时发生,则意味着您必须有一些僵尸你确定要加入所有的线程吗?

我认为不要启动7个线程,而是使用单个线程。 1.创建TaskWorker类

public class TaskWorker implements Runnable {
    private boolean quit = false;
    private Vector queue = new Vector();

    public TaskWorker() {
        new Thread(this).start();
    }

    private Task getNext() {
        Task task = null;
        if (!queue.isEmpty()) {
            task = (Task) queue.firstElement();
        }
        return task;
    }

    public void run() {
        while (!quit) {
            Task task = getNext();
            if (task != null) {
                task.doTask();
                queue.removeElementAt(task);
            } else {// task is null and only reason will be that vector has no more tasks
                synchronized (queue) {
                    try {
                        queue.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

     public void addTask(Task task) {
        synchronized (queue) {
            if (!quit) {
                queue.addElement(task);
                queue.notify();

            }

        }
    }

    public void quit() {
        synchronized (queue) {
            quit = true;
            queue.notify();
        }
    }
}
二,。创建一个抽象任务类

public abstract class Task {

    abstract void doTask();
}
三,。现在创建任务

public class DownloadTask extends Task{

        void doTask() {

            //do something
        }

    }
四,。并将此任务添加到taskworker线程

TaskWorker taskWorker = new TaskWorker();
                    taskWorker.addTask(new DownloadTask());

注意这里没有其他问题的标题都是大写的吗?你为什么选择与众不同?