gpt4 book ai didi

multithreading - 线程错误异常过多

转载 作者:行者123 更新时间:2023-12-04 04:31:11 25 4
gpt4 key购买 nike

我在制作 Blackberry 应用程序时遇到了一个问题,我有多达 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();
}
}
}

2。创建一个抽象任务类

public abstract class Task {

abstract void doTask();
}

3。现在创建任务。

public class DownloadTask extends Task{

void doTask() {

//do something
}

}

4.并将此任务添加到 taskworker 线程

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

关于multithreading - 线程错误异常过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3394560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com