发布网友 发布时间:2024-10-01 23:07
共1个回答
热心网友 时间:2024-10-17 13:40
建立新的线程来处理下载。去看Thread的API有详细说明。例如本来是:
downloading();
System.out.println("下载完成");
就改成:
class DownloadListener {//这个class自己找个地方放。
public void downloadInProgress(double percent) {
System.out.println("已下载" + percent);
}
public void downloadCompleted() {
System.out.println("已下载完成");
}
}
//从这里开始应该被改成的内容
DownloadListener downloadListener = new DownloadListener();
new Thread() {
public void run() { //这里写第二线程的内容
downloading(downloadListener);//于是downloadListener被传入了downloading函数,就可以在downloading函数内部通过呼叫downloadListener的downloadInProgress和downloadCompleted来通知第一线程下载情况。
}
}.start(); //第一线程会在这里启动第二线程,然后不管第二线程执行了什么是否完成,直接执行下一句。
System.out.println("第二线程已经启动");
//例子里很多System.out.println是为了简明。实际情况一般是修改一个给用户看的状态栏JLabel,这里下载进行中时,应该是更新一个JProgressBar。
热心网友 时间:2024-10-17 13:42
建立新的线程来处理下载。去看Thread的API有详细说明。例如本来是:
downloading();
System.out.println("下载完成");
就改成:
class DownloadListener {//这个class自己找个地方放。
public void downloadInProgress(double percent) {
System.out.println("已下载" + percent);
}
public void downloadCompleted() {
System.out.println("已下载完成");
}
}
//从这里开始应该被改成的内容
DownloadListener downloadListener = new DownloadListener();
new Thread() {
public void run() { //这里写第二线程的内容
downloading(downloadListener);//于是downloadListener被传入了downloading函数,就可以在downloading函数内部通过呼叫downloadListener的downloadInProgress和downloadCompleted来通知第一线程下载情况。
}
}.start(); //第一线程会在这里启动第二线程,然后不管第二线程执行了什么是否完成,直接执行下一句。
System.out.println("第二线程已经启动");
//例子里很多System.out.println是为了简明。实际情况一般是修改一个给用户看的状态栏JLabel,这里下载进行中时,应该是更新一个JProgressBar。