对同一资源池的调用常常采用多线程的模式运行。
笔者在这里简单演示控制台下面的简单的下载演示。
1.建立资源类,笔者这里以简单的数字演示资源量和已下载量。
public class Resourse {
private int num;
private int pre;
Resourse(){
}
Resourse(int num){
this.num = num;
this.pre = pre;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getPre() {
return pre;
}
public void setPre(int pre) {
this.pre = pre;
}
}
2.接下来建立下载类以及显示类
这两个类,以数字的形式打印数据。
首先是下载类
public class Download extends Thread{
Resourse resourse;
public void run(){
while(resourse.getPre()<=resourse.getNum()){
resourse.setPre(resourse.getPre()+1);
System.out.println("下载中:" + resourse.getPre());
}
}
}
然后是显示类
public class Show extends Thread{
Resourse resourse;
public void run(){
while(resourse.getPre()<=resourse.getNum()){
System.out.println("用户可见:" + resourse.getPre());
}
}
}
最后是测试类
public class Test {
public static void main(String[] args){
Resourse resourse = new Resourse(200000,0);
Show show = new Show();
show.resourse = resourse;
Download download = new Download();
download.resourse = resourse;
download.start();
show.start();
}
}
笔者这里把最大值设置的很大,因为线程速度太快,可能全是下载中,用户可见为0。