非同期タスクの実行中に次々に実行される実行可能キューを実装しようとしています(キュー内の次のキューが実行されることを意味します)。私は、これらの実行可能ファイルと実行可能ファイルそのものを管理するためのマネージャを作成しました。私はその後、非同期タスクの最初のタスクを取得し、それがキューを介して実行されることを期待して実行しますが、最初の実行可能ファイルを2回実行するだけです。誰かが私が働いているコードを教えてくれますか、助けになるかもしれない例を教えてください。実行ファイルのキューを実装する方法
public class ConnectionManager {
public static final int MAX_CONNECTIONS = 15;
private ArrayList<Runnable> active = new ArrayList<Runnable>();
private ArrayList<Runnable> queue = new ArrayList<Runnable>();
private static ConnectionManager instance;
public static ConnectionManager getInstance() {
if (instance == null)
instance = new ConnectionManager();
return instance;
}
public void push(Runnable runnable) {
queue.add(runnable);
if (active.size() < MAX_CONNECTIONS)
startNext();
}
private void startNext() {
if (!queue.isEmpty()) {
Runnable next = queue.get(0);
queue.remove(0);
active.add(next);
Thread thread = new Thread(next);
thread.start();
}
}
public void didComplete(Runnable runnable) {
active.remove(runnable);
startNext();
}
}
public class Task implements Runnable {
Context con;
String xmlFile;
File taskFile;
String Id;
public void create(Context context, String xml, File task, String id) {
this.con = context;
this.xmlFile = xml;
this.taskFile = task;
this.Id = id;
ConnectionManager.getInstance().push(this);
}
@Override
public void run() {
User.SendTask(con, xmlFile, taskFile, Id);
ConnectionManager.getInstance().didComplete(this);
}
実行可能オブジェクトが10億を超えるとどうなりますか? – User3