我正在为我的作业编写代码,我对编写多线程应用程序并不太熟悉。我学会了如何打开一个线程并启动它。我更好地展示代码。Java多线程,如何停止?
for (int i = 0; i < a.length; i++) {
download(host, port, a[i]);
scan.next();
}
我上面的代码连接到服务器打开a.length
多个并行请求。换句话说,下载将打开a[i]
连接,以在每次迭代中获取相同的内容。但是,我希望我的服务器在i = 0
完成下载方法并开始下一次迭代i = 1
,此时已下载的线程已打开完成。我用scan.next()手动完成,但显然这不是一个好的解决方案。我怎样才能做到这一点?
编辑:
public static long download(String host, int port) {
new java.io.File("Folder_" + N).mkdir();
N--;
int totalLength = length(host, port);
long result = 0;
ArrayList<HTTPThread> list = new ArrayList<HTTPThread>();
for (int i = 0; i < totalLength; i = i + N + 1) {
HTTPThread t;
if (i + N > totalLength) {
t = (new HTTPThread(host, port, i, totalLength - 1));
} else {
t = new HTTPThread(host, port, i, i + N);
}
list.add(t);
}
for (HTTPThread t : list) {
t.start();
}
return result;
}
在我HTTPThread;
public void run() {
init(host, port);
downloadData(low, high);
close();
}
注:我们的测试Web服务器是一个修改后的web服务器,它就会范围:i-j
并在响应中,有i-j
文件的内容。