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