JSONArray jsonArray = new JSONArray(); for (int i = 0; i < circuJs.size(); i++) { jsonArray.add(RedmineApi.getIssuesStatu(circuJs.getString(i))); } 将上面的代码换成多线程执行
时间: 2024-03-26 18:40:14 浏览: 91
可以使用Java多线程来加速对 `RedmineApi.getIssuesStatu` 的调用。可以将循环中的每次调用 `RedmineApi.getIssuesStatu` 封装成一个线程,然后启动多个线程并发执行。
以下是示例代码:
```
JSONArray jsonArray = new JSONArray();
List<Thread> threadList = new ArrayList<>();
for (int i = 0; i < circuJs.size(); i++) {
final int index = i;
Thread thread = new Thread(() -> {
Object result = RedmineApi.getIssuesStatu(circuJs.getString(index));
synchronized (jsonArray) {
jsonArray.add(result);
}
});
threadList.add(thread);
thread.start();
}
for (Thread thread : threadList) {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
```
上述代码中,我们将每个 `RedmineApi.getIssuesStatu` 的调用封装成了一个线程,并将线程加入到一个线程列表中。然后启动所有线程并发执行。在每个线程中,我们使用同步锁来保证对 `jsonArray` 的并发访问安全。
最后,我们通过调用 `join()` 方法等待所有线程执行完毕,以确保 `jsonArray` 中的所有数据都被写入完成。
阅读全文