i have a jsp program which use to download some files from the internet. i try to make it into multi-threading download. but at the end it still run in single thread.Do i need to use java bean? please help me. Thanks.
<%@ page import="java.io.*"%>
<%@ page import="java.net.URL"%>
<%@ page import="java.net.URLConnection"%>
<%
String inStr="http://hgdownload.cse.ucsc.edu/goldenPath/hg17/vsMm5/axtNet/chr";
URL m_URL = null;
URLConnection m_URLConn = null;
boolean m_bOk = true;
Thread thread1 = new Thread("T1");
Thread thread2 = new Thread("T2");
thread1.start();
thread2.start();
boolean thread1IsAlive = true;
boolean thread2IsAlive = true;
do {
if(thread1IsAlive && !thread1.isAlive())
{
thread1IsAlive = false;
try
{
//thread1.join();
int x=1;
String x_str = "";
do{
x_str = Integer.toString(x);
if (x==23) x_str = "X";
else if (x==24) x_str="Y";
m_URL = new URL(inStr+x_str+".axt.gz");
m_URLConn = m_URL.openConnection();
URLConnection uc = m_URL.openConnection();
//InputStream in = new FileInputStream(uc.getInputStream());
InputStream in = new BufferedInputStream(uc.getInputStream());
ByteArrayOutputStream bs = new ByteArrayOutputStream(9999);
int i;
String sFile = "c:\\downloadChr\\mhuman\\chr"+x_str+".axt.gz";
System.out.println("Getting file " + sFile);
File of = new File(sFile);
while(-1 != (i = in.read()))
bs.write(i);
in.close();
byte bt[] = bs.toByteArray();
FileOutputStream fos = new FileOutputStream(of);
fos.write(bt);
fos.close();
System.out.println("Thread 1 is dead.");
} while(x++ <12); //do
}//try
catch(Exception e)
{
e.printStackTrace();
}
}
if(thread2IsAlive && !thread2.isAlive())
{
thread2IsAlive = false;
try{
//thread2.join();
int x=13;
String x_str = "";
do{
x_str = Integer.toString(x);
if (x==23) x_str = "X";
else if (x==24) x_str="Y";
m_URL = new URL(inStr+x_str+".axt.gz");
m_URLConn = m_URL.openConnection();
URLConnection uc = m_URL.openConnection();
//InputStream in = new FileInputStream(uc.getInputStream());
InputStream in = new BufferedInputStream(uc.getInputStream());
ByteArrayOutputStream bs = new ByteArrayOutputStream(9999);
int i;
String sFile = "c:\\downloadChr\\mhuman\\chr"+x_str+".axt.gz";
System.out.println("Getting file " + sFile);
File of = new File(sFile);
while(-1 != (i = in.read()))
bs.write(i);
in.close();
byte bt[] = bs.toByteArray();
FileOutputStream fos = new FileOutputStream(of);
fos.write(bt);
fos.close();
System.out.println("Thread 2 is dead.");
} while(x++ <24); //do
}//try
catch(Exception e)
{
e.printStackTrace();
}
}//if
} while(thread1IsAlive || thread2IsAlive);
%>
<meta HTTP-EQUIV="REFRESH" content="1; url=http://localhost:8080/examples/jsp/HMC/HTML/downloaded.htm">